0


sql中的having与where对比

sql中的having与where对比

💖The Begin💖点点关注,收藏不迷路💖

在SQL中,

having

where

都是用来过滤数据的,但它们之间存在一些关键的不同点。

1、语法差异

  • **where**:在数据分组前过滤记录,只能使用表中的列名作为条件。selectcolumnfromtablewhere column_condition;
  • **having**:通常与group by一起使用,在数据分组后过滤聚合结果,可以使用聚合函数的结果作为条件。selectcolumn, aggregate(column)fromtablegroupbycolumnhaving aggregate_condition;

2、影响结果范围

  • **where**:决定了从表中读取哪些行。
  • **having**:决定了哪些分组的结果会返回给客户端。

3、索引使用

  • **where**:可以直接利用索引来加速查询。
  • **having**:不直接使用索引,但group by可以利用索引,从而间接影响having的效率。

4、聚合函数

  • **where**:不能使用聚合函数进行过滤。
  • **having**:专门用于基于聚合函数的结果进行过滤。

5、总结

  • **where**:分组前过滤,基于列名,可用索引。
  • **having**:分组后过滤,基于聚合结果,不直接用索引但受group by影响。

在这里插入图片描述

💖The End💖点点关注,收藏不迷路💖

标签: sql 数据库 面试

本文转载自: https://blog.csdn.net/qq_41840843/article/details/140794187
版权归原作者 Seal^_^ 所有, 如有侵权,请联系我们删除。

“sql中的having与where对比”的评论:

还没有评论