HAVING 和 WHERE 都是 SQL 中用于过滤数据的子句,但它们之间有一些关键区别:
应用场景:
使用条件:
执行顺序:
举个例子,假设我们有一个名为 “orders” 的表,其中包含 “customer_id”、“order_date” 和 “amount” 列。
使用 WHERE 子句过滤出特定日期范围内的订单:
SELECT * FROM orders WHERE order_date BETWEEN '2021-01-01' AND '2021-12-31';
使用 HAVING 子句过滤出订单总金额大于 1000 的客户:
SELECT customer_id, SUM(amount) as total_amount
FROM orders
GROUP BY customer_id
HAVING total_amount > 1000;
总之,WHERE 子句用于过滤原始数据,而 HAVING 子句用于过滤聚合后的数据。这两者在 SQL 查询中的应用场景和执行顺序有所不同。