MySQL WHERE 和 HAVING区别
在使用MySQL进行数据查询时,有两个常用的关键字:WHERE
和HAVING
。这两个关键字的区别是什么?如何选择使用?
阅读更多:MySQL 教程
WHERE
WHERE
操作是基于行进行的,用于对行进行筛选,以过滤出符合条件的行。在SELECT
语句中,WHERE
子句是非常常见的,用于过滤数据表中的数据。例如,如果我们要找到年龄大于30岁的用户,可以这样执行:
这个查询语句将返回所有年龄大于30岁的用户,即所有满足WHERE
子句条件的行。
HAVING
HAVING
操作是基于列进行的,用于对聚合函数的结果进行筛选。当使用GROUP BY
分组时,HAVING
子句对返回的列进行筛选,仅保留符合条件的聚合结果。例如,如果我们要找出购买数量大于10的产品类别以及它们的购买者数量,可以这样执行:
这个查询语句将返回购买数量大于10的产品类别以及购买者数量,即所有满足HAVING
子句条件的结果。
区别
在使用WHERE
和HAVING
时,要注意它们之间的区别。WHERE
过滤的是行,而HAVING
过滤的是列。WHERE
子句对数据表中的数据进行过滤,而HAVING
子句对聚合函数的结果进行过滤。由于HAVING
涉及到聚合函数的计算,所以HAVING
一般用于GROUP BY
查询。
另外,WHERE
子句可以在查询语句中的任意位置出现,而HAVING
子句只能出现在GROUP BY
子句之后。
总结
WHERE
和HAVING
都是常见的数据查询关键字,但它们的作用不同。WHERE
过滤行,而HAVING
过滤列。在使用时,应该根据数据查询的需求,选择合适的关键字。如果需要对整个数据表进行过滤,使用WHERE
;如果需要对聚合函数的结果进行过滤,使用HAVING
。