原地址:http://www.cnblogs.com/jinianjun/archive/2012/06/14/2549735.html
表的设计:
表里面的内容:
一:在不使用聚合函数的时候,group by 子句中必须包含所有的列,否则会报错,如下
select name,MON from [测试、] group by name
会报错:
在子句中加上所有的列的时候
select name,MON from [测试、] group by name,mon
这时候不报错,执行结果
此时虽然成功执行了,但是可以看出来group by在这里并没有发挥任何的作用,我们完全可以直接select而不用group by,所以,group by子句要配合聚合函数使用,并且,在配合聚合函数使用的时候,在group by子句中不要加上聚合函数处的列名(加入as了的话)
配合聚合函数使用了的情况:
select SUM(mon),name from [测试、] group by name
结果:
是我们想要的。
再如:
select MAX(ID),name from [测试、] group by name
结果:
也是我们想要的。
但是说如果这样的话:
select MAX(ID) as id,name from [测试、] group by name,id
得到的结果是:
很明显这不是我们想要的。
所以这时候在使用聚合函数的地方若是使用了as另外命名,请不要在group by子句后再加上那个令命名的名字,否则就和文章刚开始出现的情况一样