首頁 >資料庫 >mysql教程 >為什麼使用 GROUP BY 的 SQL SELECT 查詢傳回「無效列」錯誤?

為什麼使用 GROUP BY 的 SQL SELECT 查詢傳回「無效列」錯誤?

Linda Hamilton
Linda Hamilton原創
2025-01-23 01:07:11909瀏覽

Why Does My SQL SELECT Query with GROUP BY Return an

SQL GROUP BY 查詢中的無效列錯誤

在包含 GROUP BY 子句的 SQL 查詢中選擇列時,如果列既未包含在聚合函數中,也未包含在 GROUP BY 子句中,則可能會發生錯誤。此錯誤通常表現為:「列 'Employee.EmpID' 在選擇清單中無效,因為它既未包含在聚合函數中,也未包含在 GROUP BY 子句中」。

其原因在於單值規則。在 GROUP BY 查詢中,非聚合列的輸出在每個群組內必須是唯一的。但是,像 'Employee.EmpID' 一樣選擇單一列而不對其進行聚合,會導致結果不明確。

要解決此錯誤,請將資料列包含在 GROUP BY 子句中,或對其套用聚合函數。例如,如果您想要計算每個位置的員工人數,請使用以下查詢:

<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>

此查詢計算每個位置的員工人數,同時仍為每個群組提供位置 ID。或者,如果您想要為每個位置選擇所有列,但只顯示最新的員工 ID(最大值),則可以使用 MAX 聚合函數:

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

透過使用聚合函數或將資料列包含在 GROUP BY 子句中,您可以確保檢索到的資料明確且符合單值規則。

以上是為什麼使用 GROUP BY 的 SQL SELECT 查詢傳回「無效列」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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