分组查询,就是根据order by 指定的规则对数据进行分组,开发中会经常遇到像查询每个部门的人数、每个班级的人数这样的问题,就可以用分组查询来解决。
语法:
注意点:
- 查询除分组函数外的字段,必须要出现在 group by之后
- where字句紧跟group by字句,where操作的是原始表对象,where后面的条件判断要么是操作常量要么是原始表中的字段,where字句中不能使用分组函数,因为where字句的执行顺序高于分组函数;如果对分组的数据需要过滤则使用having关键字,having操作的是分组后的结果集(虚拟表)
- 注意where筛选器和having筛选器的使用区别:
where过滤器操作的是原始表数据,一般来说,分组之前的过滤放在where子句中;分组之后的过滤放在having子句中,但是如果having过滤条件操作的是原始表的字段,也可以放在where中,且效率更高。
关键字 | 使用场景 | 数据源 | 位置 |
---|---|---|---|
where | 分组前筛选 | 原始表 | group by 之前 |
having | 分组后筛选 | 分组后的结果集 | group by 之后 |
版权声明:本文为weixin_46250898原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。