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 查詢中的應用場景和執行順序有所不同。