【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
写的顺序:select ... from... where.... group by... having... order by..
执行顺序:from... where...group by... having.... select ... order by...
值得注意的是group by的用法:
select 列a,聚合函数(聚合函数规范) from 表名 where 过滤条件 group by 列a ;
select 列a,列b 聚合函数(聚合函数规范) from 表名 where 过滤条件 group by 列a , 列b
也就是说,我们从select里面展示的字段都是要用来分组的依据,如果是:
select 列a,列b 聚合函数(聚合函数规范) from 表明 where 过滤条件 group by 列a
having和where的用法区别:
1.having只能用在group by之后,对分组后的结果进行筛选(即使用having的前提条件是分组)。
2.where肯定在group by 之前,即也在having之前。
3.where后的条件表达式里不允许使用聚合函数,而having可以。
来源:oschina
链接:https://my.oschina.net/u/4049480/blog/3144013