mysql中where和having的区别
mysql中where和having的区别
小吴顶呱呱having子句与where都是设定条件筛选的语句。
区别:
- having是在分组后对数据进行过滤
- where是在分组前对数据进行过滤
- having后面可以使用聚合函数
- where后面不可以使用聚合函数
在查询过程中执行顺序:from>where>group(包含聚合)>having>order>select
所以聚合函数(sum,min,max,avg,count)要比having子句优先执行,而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)
1 | where子句: |
1 | having子句: |
having就是来弥补where在分组数据判断时的不足。因为where执行优先级别要快于聚合语句。having子句可以让我们直接筛选成组后的各组数据,也可以在聚合后对组记录进行筛选,而where子句在聚合前先筛选记录,也就是说作用在GROUP BY 子句和having子句前。
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果