阅读 17020 次
发表时间:2010-06-02
表t有四个字段a/b/c/d,问下面两个SQL语句结果有什么不同:

select a, b, sum(c)    
from t    
where d='t'    
group by a, b    
order by a,b  


select a, b, sum(c) 
from t 
where d='t' 
group by  b ,a
order by a,b


区别就是Group By中的列顺序不同
做了N年SQL了,还从来没有留意这个问题,我直接回答:结果没区别,但是对性能可能有影响

2010.06.07:看到回帖,发现很多人说SQL语句完全一样,部分出言不逊,觉得这些人才真是太不认真,这样如何做程序?我已经清楚说明是GroupBy中的列顺序不同,现在黑体表示,但是内容没有任何修改(有其他人的引用回帖为证),该公司提供的正确结果我是不知道的。

发表时间:2010-06-02
1.如果我眼神没问题的话,这两句sql没有区别;
2.假定区别是group by a,b和group by b,a的区别的话,对结果是有区别的,第一个是先对a分组后在对结果对b分组,第二个相反
发表时间:2010-06-02
老兄,你的代码好像贴错了吧?!
发表时间:2010-06-02
qiuxue2 写道
1.如果我眼神没问题的话,这两句sql没有区别;
2.假定区别是group by a,b和group by b,a的区别的话,对结果是有区别的,第一个是先对a分组后在对结果对b分组,第二个相反


朝三暮四 结果不还是一样的
我也觉得是性能上的区别
发表时间:2010-06-03
支持,group by 不同,效率上应该是不一样的
发表时间:2010-06-03
are you kidding me~
发表时间:2010-06-03
刃之舞 写道
are you kidding me~

发表时间:2010-06-03
本人眼拙,看不出。请楼主赐教
发表时间:2010-06-03
dajian 写道
刃之舞 写道
are you kidding me~


me too
发表时间:2010-06-03
有何不同之处? 莫非是多了一个空格????
Global site tag (gtag.js) - Google Analytics