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