首頁 >資料庫 >mysql教程 >為什麼我的 SQL 查詢會拋出與 GROUP BY 相關的「選擇清單中的列無效」錯誤?

為什麼我的 SQL 查詢會拋出與 GROUP BY 相關的「選擇清單中的列無效」錯誤?

Barbara Streisand
Barbara Streisand原創
2025-01-23 01:21:10300瀏覽

Why Does My SQL Query Throw a

SQL 查詢錯誤:列在 SELECT 清單中無效,原因是不符合聚合函數或 GROUP BY 子句

執行 SQL 查詢時,您可能會遇到以下錯誤:

<code>Column 'Column_Name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.</code>

此錯誤的原因如下:

資料分組

GROUP BY 子句中,指定列值相同的行將分組在一起。例如,在以下查詢中:

<code>SELECT loc.LocationID, emp.EmpID
FROM Employee AS emp FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID
GROUP BY loc.LocationID</code>

員工按其 LocationID 分組。但是,如果您嘗試在SELECT 清單中包含不在GROUP BY 子句中的列(例如,emp.EmpID),則會收到此錯誤,因為無法確定應為每個群組選擇哪個EmpID值。

聚合函數

聚合函數(如 SUMCOUNTMAXMIN)可用於取得分組資料的匯總資訊。如果您在 SELECT 清單中包含非聚合列,但它不是 GROUP BY 子句的一部分,則必須對其使用聚合函數。

例如,如果您想計算每個位置的員工人數,可以使用:

<code>SELECT loc.LocationID, COUNT(emp.EmpID)
FROM Employee AS emp FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID
GROUP BY loc.LocationID</code>

這確保了對於每個位置,只傳回員工計數,而不是單一員工 ID 清單。

解決方法

要解決此錯誤,您必須:

  • 將欄位新增至 GROUP BY 子句: 這也會根據附加欄位將資料分組。
  • 在 SELECT 清單中對列使用聚合函數: 這將根據非聚合列計算每個群組的匯總資訊。

以上是為什麼我的 SQL 查詢會拋出與 GROUP BY 相關的「選擇清單中的列無效」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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