了解在HAVING 子句中使用別名的限制
在SQL 中,在HAVING 子句中使用別名進行聚合似乎很直觀。然而,由於 SQL 查詢的特定計算順序,這種方法會導致錯誤「無效的列名」。
要理解此限制,了解 SQL 如何執行查詢至關重要:
因此,由於 HAVING 子句在 SELECT 子句之前計算,因此在 SELECT 語句中分配給聚合的別名(例如,「col7 ") 在計算 HAVING 表達式時 SQL 還不知道。因此,會出現錯誤「無效的列名‘col7’」。
相反,ORDER BY 子句在 SELECT 語句之後計算,允許使用 SELECT 子句中定義的別名。這是因為 ORDER BY 子句對 SELECT 語句所建立的結果集進行操作。
要解決此問題,請將 HAVING 子句中的別名替換為實際的聚合表達式,如下所示:
select col1,count(col2) from --some join operation group by col1 having count(col2) >= 3
以上是為什麼我不能在 SQL 的 HAVING 子句中使用別名?的詳細內容。更多資訊請關注PHP中文網其他相關文章!