為什麼HAVING 子句中禁止使用別名聚合
在SQL 中,使用者在嘗試對聚合使用別名時經常會遇到錯誤HAVING 子句。這源自於 SQL 處理查詢的特定順序。
用於過濾 GROUP BY 操作結果的 HAVING 子句在 SELECT 子句之前計算。因此,在評估 HAVING 子句時,SELECT 子句中定義的別名尚不可用。
為了更好地理解這一點,讓我們考慮以下查詢執行的邏輯順序:
由於HAVING 子句在SELECT 子句之前計算,因此它無法引用稍後在查詢中定義的別名。此限制解釋了為什麼在 HAVING 子句中使用別名(如範例所示)會導致「無效的列名」錯誤。
相反,別名在 ORDER BY 子句中起作用,因為 ORDER BY 子句是在 SELECT 子句之後評估。因此,SELECT 子句中定義的別名可在 ORDER BY 子句中使用。
以上是為什麼不能在 SQL 的 HAVING 子句中使用別名聚合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!