oracle9i中用group by之后,会自动排序。
oracle10g中如果不设置优化器,用group by后不会自动排序。想请教下,如果用oracle9i,例如:
select a,b,c from table
group by a,b,c;
它会隐含包含一个order by a,b,c?还是隐含包含一个order by a?因为我看到有人说9i中会按照group by后的第一列进行排序,如果group by有多列,那仅按照第一列排序还是依次按照多列排序呢?谢谢!

解决方案 »

  1.   

    我的9I
    测试了下,GROUP BY A,B,C 相当于
    GROUP BY A,B,C  
    ORDER BY ABC
      

  2.   

    9i 可以用group by代替来达到排序目的 
     
    10g做了改变。不要期望用group by 的输出是排序的,Oracle不保证这一点。用order by才会保证。
    如果期望在10中group by 与9i一样的行为,将隐含参数"_gby_hash_aggregation_enabled"设置为FALSE
     
    在10g 10.2.1版本中测试隐含参数,并不能生效;
    在11g 11.1.0.6.0 版本中测试隐含参数,能生效;