修正 SQL GROUP BY 子句中的「列在選擇清單中無效」錯誤
使用 GROUP BY
的資料庫查詢需要仔細考慮 SELECT
列表。 所有選定的欄位必須進行聚合(使用 COUNT
、SUM
、MIN
、MAX
等函數)或明確包含在 GROUP BY
子句中。 不遵守此規則會導致錯誤「列在選擇清單中無效,因為它不包含在聚合函數或 GROUP BY 子句中」。
當 SELECT
清單包含既不聚合也不屬於 GROUP BY
分組的欄位時,就會出現此錯誤。
解決方案涉及調整 SELECT
清單或 GROUP BY
子句。
範例與解:
讓我們檢查一下這個有問題的查詢:
<code class="language-sql">SELECT loc.LocationID, emp.EmpID FROM Employee AS emp FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID GROUP BY loc.LocationID</code>
發生錯誤是因為 emp.EmpID
既未聚合也不包含在 GROUP BY
子句中。 這裡有兩種修正方法:
解 1:聚合未分組的欄位
<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)
) 進行計數。
解決方案 2:將欄位加入 GROUP BY 子句
<code class="language-sql">SELECT loc.LocationID, emp.EmpID FROM Employee AS emp FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID GROUP BY loc.LocationID, emp.EmpID</code>
這將按 LocationID
和 EmpID
將結果分組。 請注意,這將消除具有不同 LocationID
值的重複 EmpID
條目。 結果將單獨顯示每位員工的位置。
以上是如何修復 SQL GROUP BY 查詢中的「選擇清單中的列無效」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!