首頁 > 資料庫 > mysql教程 > 如何修復 SQL GROUP BY 查詢中的「選擇清單中的列無效」錯誤?

如何修復 SQL GROUP BY 查詢中的「選擇清單中的列無效」錯誤?

Susan Sarandon
發布: 2025-01-23 01:11:10
原創
165 人瀏覽過

How to Fix the

修正 SQL GROUP BY 子句中的「列在選擇清單中無效」錯誤

使用 GROUP BY 的資料庫查詢需要仔細考慮 SELECT 列表。 所有選定的欄位必須進行聚合(使用 COUNTSUMMINMAX 等函數)或明確包含在 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>
登入後複製

這將按 LocationIDEmpID 將結果分組。 請注意,這將消除具有不同 LocationID 值的重複 EmpID 條目。 結果將單獨顯示每位員工的位置。

以上是如何修復 SQL GROUP BY 查詢中的「選擇清單中的列無效」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板