基本语法
1 | SELECT column1, column2, ... |
group by 意思就是通过什么分组,就是把某个字段A相同的值分成一个组。但是分组之后,变成了一行,字段A大家都一样,其他字段可能都不一样,零零散散的。这个时候,就需要用到聚合函数,将这些零散的数据算出一个结果。
1 | -- 没分组:查出所有明细 |
执行顺序
有关group by的sql执行顺序是:FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT
需要注意的是:
- WHERE 在分组前执行,过滤的是原始行(里面可以用普通字段,不能用聚合函数)。
- HAVING 在分组后执行,过滤的是组(里面必须用聚合函数)。
- select 中如果有其他非聚合函数或者group by后接的属性,不能写其他字段,因为其它字段是随机返回的。
如果需要类似“每个组里面数值最高的人”的需求,就需要使用子查询或者关联查询来实现。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 coder-xuyong!
评论







