sql中的having与where对比
sql中的having与where对比
- 1、语法差异
- 2、影响结果范围
- 3、索引使用
- 4、聚合函数
- 5、总结
💖The Begin💖点点关注,收藏不迷路💖 |
在SQL中,having
和where
都是用来过滤数据的,但它们之间存在一些关键的不同点。
1、语法差异
-
where
:在数据分组前过滤记录,只能使用表中的列名作为条件。select column from table where column_condition;
-
having
:通常与group by
一起使用,在数据分组后过滤聚合结果,可以使用聚合函数的结果作为条件。select column, aggregate(column) from table group by column having aggregate_condition;
2、影响结果范围
where
:决定了从表中读取哪些行。having
:决定了哪些分组的结果会返回给客户端。
3、索引使用
where
:可以直接利用索引来加速查询。having
:不直接使用索引,但group by
可以利用索引,从而间接影响having
的效率。
4、聚合函数
where
:不能使用聚合函数进行过滤。having
:专门用于基于聚合函数的结果进行过滤。
5、总结
where
:分组前过滤,基于列名,可用索引。having
:分组后过滤,基于聚合结果,不直接用索引但受group by
影响。
💖The End💖点点关注,收藏不迷路💖 |