首頁 >資料庫 >mysql教程 >為什麼我的 SQL 查詢會產生「列不在聚合或分組依據子句中」錯誤?

為什麼我的 SQL 查詢會產生「列不在聚合或分組依據子句中」錯誤?

Susan Sarandon
Susan Sarandon原創
2025-01-23 01:26:09345瀏覽

Why Does My SQL Query Produce a

排查「列不在聚合或分組依據子句中」SQL 錯誤

本指南解決了常見的SQL 錯誤:「列'Employee.EmpID'在選擇清單中無效,因為它不包含在聚合函數或GROUP BY 子句中。」當您的SELECT 語句包含既不聚合也當不屬於GROUP BY 子句的欄位時,就會出現此錯誤。

理解聚合函數與 GROUP BY

GROUP BY 子句將指定列中具有相同值的行進行分組。 要顯示這些群組中的數據,您通常會使用聚合函數,例如 SUMCOUNTAVGMINMAX。這些函數計算每個組的總和值。

單值法則

SQL 的單值規則規定 SELECT 清單中的任何非聚合列在每個群組中都必須具有單一一致的值。 如果非聚合列每組包含多個值,則查詢將不明確,因為 SQL 無法決定要傳回哪個值。

解決錯誤

假設您的目標是列出位置 ID 和每個位置的員工人數。修正後的查詢使用 COUNT 聚合函數:

<code class="language-sql">SELECT loc.LocationID, COUNT(emp.EmpID) AS EmployeeCount
FROM Employee AS emp
FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID
GROUP BY loc.LocationID;</code>

COUNT(emp.EmpID) 計算每個 LocationID 的員工數量。這確保了每組只有一個 EmployeeCount 值,滿足單值規則並消除錯誤。 GROUP BY loc.LocationID 子句依位置將結果分組。

以上是為什麼我的 SQL 查詢會產生「列不在聚合或分組依據子句中」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn