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值。
聚合函數
聚合函數(如 SUM、COUNT、MAX 和 MIN)可用於取得分組資料的匯總資訊。如果您在 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 清單。
解決方法
要解決此錯誤,您必須:
以上是為什麼我的 SQL 查詢會拋出與 GROUP BY 相關的「選擇清單中的列無效」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!