日期:2014-05-17  浏览次数:20979 次

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().