📅  最后修改于: 2023-12-03 14:47:36.989000             🧑  作者: Mango
在 SQL 查询中,HAVING
子句和 WHERE
子句是用来过滤数据的两个重要关键字。尽管它们看起来很相似,但它们在使用方式和作用范围上有一些差别。本文将介绍 HAVING
和 WHERE
子句的用法和区别。
WHERE
子句用于在查询执行之前对表中的数据进行过滤。它通常出现在 SELECT
、UPDATE
或 DELETE
语句中,并用于指定一个条件来选择满足条件的行。
以下是一个使用 WHERE
子句的例子,假设有一个名为 employees
的表,包含员工的数据:
SELECT * FROM employees WHERE salary > 5000;
上述查询将返回 employees
表中工资大于 5000 的所有员工的记录。
WHERE
子句的特点:
WHERE
子句出现在 SELECT
语句中,用于从表中选择满足条件的行。WHERE
子句在查询执行之前进行过滤。HAVING
子句用于在查询执行后对聚合结果进行过滤。它通常与 GROUP BY
子句一起使用,用于在分组的基础上筛选结果。
以下是一个使用 HAVING
子句的例子,假设有一个名为 sales
的表,包含销售数据:
SELECT country, SUM(revenue) as total_revenue
FROM sales
GROUP BY country
HAVING total_revenue > 1000000;
上述查询将返回销售总收入大于 1000000 的每个国家的结果。
HAVING
子句的特点:
HAVING
子句出现在 SELECT
语句中的 GROUP BY
子句之后,并用于对分组结果进行过滤。SUM
、COUNT
、AVG
等)的基础上筛选结果。HAVING
子句在查询执行之后进行过滤。HAVING
子句和 WHERE
子句的主要区别在于它们的作用范围和使用场景:
WHERE
子句用于在查询执行之前对单个行进行过滤,它操作的是行级数据。HAVING
子句用于在查询执行后对聚合结果进行过滤,它操作的是分组的结果。下面是一些适合使用 WHERE
子句的情况:
SELECT
、UPDATE
、DELETE
等语句之前进行行级过滤。下面是一些适合使用 HAVING
子句的情况:
SUM
、COUNT
、AVG
等)的基础上筛选结果。GROUP BY
子句使用,对分组结果进行过滤。要记住的是,虽然在某些情况下 WHERE
子句和 HAVING
子句可以完成相同的工作,但它们的使用语境是不同的,应根据需要选择适当的子句。
希望这篇介绍对你理解 SQL 中的 HAVING
和 WHERE
子句有所帮助!