WHERE 和 HAVING 子句在 SQL 中均用於過濾數據,但作用範圍不同:WHERE 子句過濾單行,HAVING 子句過濾分組後的結果集。 WHERE 子句在分組前應用,影響聚合函數的結果行;HAVING 子句在分組後套用,影響分組行而不是單一行。 WHERE 子句可以過濾任何列,而 HAVING 子句只能過濾聚合函數的結果。
WHERE 和HAVING 子句的差異
在SQL 查詢中,WHERE 和HAVING 子句用於過濾資料行,但它們有不同的作用範圍和用途。
WHERE 子句
HAVING 子句
對比表
#WHERE 子句 | HAVING 子句 | |
---|---|---|
作用範圍 | 單行 | 分組 |
應用程式時機 | 分組前 | 分組後 |
影響 | #聚合函數結果行 | 分組行 |
##範例
以下查詢使用WHERE 子句過濾出銷售超過1000 的訂單:<code class="sql">SELECT * FROM orders WHERE sales_amount > 1000;</code>以下查詢使用HAVING子句過濾出所有平均銷售額超過1000 的客戶:
<code class="sql">SELECT customer_id, AVG(sales_amount) AS avg_sales FROM orders GROUP BY customer_id HAVING avg_sales > 1000;</code>注意事項
以上是sql中where和having的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!