HAVING
和 WHERE
是 MySQL 查询语句中用于筛选数据的两个关键字,它们之间的区别如下:
作用范围:
WHERE
:用于在执行SELECT
语句时,在从表中选择行之前进行筛选,基于行的原始数据进行过滤。HAVING
:用于在执行SELECT
语句时,对分组后的结果进行筛选,基于聚合后的数据进行过滤。
使用场景:
WHERE
:常用于过滤单独的行,例如筛选特定日期、价格范围等条件。HAVING
:常用于对分组后的结果进行过滤,例如在使用GROUP BY
子句后,对分组后的结果进行聚合函数筛选。
使用对象:
WHERE
:作用于行级数据,即对表中的每一行进行判断。HAVING
:作用于分组后的数据,即对聚合函数计算后的结果进行判断。
使用顺序:
WHERE
:通常在查询的最开始使用,用于过滤原始数据。HAVING
:在使用GROUP BY
子句后,对分组后的数据进行聚合函数计算,然后在HAVING
中筛选。
总之,WHERE
用于过滤原始数据,HAVING
用于在 GROUP BY
后对聚合数据进行筛选。它们分别适用于不同的查询需求。