表的设计:

GROUP BY 与聚合函数 使用注意点_java经验集锦

表里面的内容:

GROUP BY 与聚合函数 使用注意点_java经验集锦_02

 

一:在不使用聚合函数的时候,group by 子句中必须包含所有的列,否则会报错,如下



select name,MON from [测试、] group by name


会报错:

GROUP BY 与聚合函数 使用注意点_java经验集锦_03

在子句中加上所有的列的时候



select name,MON from [测试、] group by name,mon


这时候不报错,执行结果

GROUP BY 与聚合函数 使用注意点_Mysql_04

此时虽然成功执行了,但是可以看出来group by在这里并没有发挥任何的作用,我们完全可以直接select而不用group by,所以,group by子句要配合聚合函数使用,并且,在配合聚合函数使用的时候,在group by子句中不要加上聚合函数处的列名(加入as了的话)

配合聚合函数使用了的情况:



select SUM(mon),name from [测试、] group by name


结果:

GROUP BY 与聚合函数 使用注意点_java经验集锦_05

是我们想要的。

再如:



select MAX(ID),name from [测试、] group by name


结果:

GROUP BY 与聚合函数 使用注意点_通用实践_06

也是我们想要的。

 

但是说如果这样的话:



select MAX(ID) as id,name from [测试、] group by name,id


得到的结果是:

GROUP BY 与聚合函数 使用注意点_java经验集锦_07

很明显这不是我们想要的。

所以这时候在使用聚合函数的地方若是使用了as另外命名,请不要在group by子句后再加上那个令命名的名字,否则就和文章刚开始出现的情况一样