首頁 > 資料庫 > mysql教程 > 為什麼我的 SQL 查詢中出現「選擇清單中的列無效」錯誤?

為什麼我的 SQL 查詢中出現「選擇清單中的列無效」錯誤?

Barbara Streisand
發布: 2025-01-23 01:16:08
原創
1004 人瀏覽過

Why am I Getting a

SQL「選擇清單中的欄位無效」錯誤解釋

資料庫查詢必須遵循單值規則。 這表示 SELECT 語句中的任何欄位都必須:

  1. 包含在 GROUP BY 子句中(根據特定列值對行進行分組)。
  2. 在聚合函數中使用(如 SUMMINMAXAVGCOUNT 等)。

SQL 查詢出現問題:

以下查詢違反了此規則:

<code class="language-sql">select *
from Employee as emp full join Location as loc
on emp.LocationID = loc.LocationID
group by (loc.LocationID)</code>
登入後複製

* 選取所有欄位。 但是,Employee.EmpID(和其他 Employee 列)既不按 (GROUP BY) 分組,也不聚合。 由於多個員工可以共用 loc.LocationID,因此查詢不明確 – 它不知道為每個位置傳回哪個 Employee.EmpID

解:

要解決此問題,您有兩個主要選項:

  1. GROUP BY 子句中包含所有非聚合列:
<code class="language-sql">select emp.EmpID, loc.LocationID
from Employee as emp full join Location as loc
on emp.LocationID = loc.LocationID
group by emp.EmpID, loc.LocationID</code>
登入後複製

這將按員工 ID 和位置 ID 對結果進行分組,為每個位置的每位員工提供唯一的結果。

  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))。 其他聚合函數可用於計算總和、平均值或其他統計資料。

透過遵循單值規則,您的 SQL 查詢將產生清晰、明確且可預測的結果。

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

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