select * from A group by ____ 填什么和select * from A 查出的结果 一样
需要对表无意义的分组。
就是说 select * from A 查出的结果
和 select * from A group by ____ 查出来的结果一样。
横线上应该填什么呢? SQL
[解决办法]
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> select * from dept group by deptno,dname,loc;
DEPTNO DNAME LOC
---------- -------------- -------------
20 RESEARCH DALLAS
40 OPERATIONS BOSTON
10 ACCOUNTING NEW YORK
30 SALES CHICAGO
[解决办法]
常量吧,一般null
[解决办法]
group by所有列
[解决办法]
group by 可以不是所有列的。
[解决办法]
group必须取唯一,所以要不唯一,则必须人工给予一个不是唯一的东西。
至于常量,NULL,那是不行的,通不过语法监测。
-------------------------
可以 有个简单的语法,基本可以保证是一致的。
譬如
select col1,col2....coln from tab group by col1,col2....coln,sys_guid().
关键在SYS_GUID(),如果换成rowid也将将可以。
[解决办法]
with tb as
(select mod(level,4) id from dual connect by level <=20)
select * from tb a group by a.id,rownum