首頁 > 資料庫 > mysql教程 > 如何修復子查詢中 MySQL 的「無效使用群組函數」錯誤?

如何修復子查詢中 MySQL 的「無效使用群組函數」錯誤?

Barbara Streisand
發布: 2025-01-11 22:38:46
原創
858 人瀏覽過

How to Fix MySQL's

偵錯 MySQL 的「無效使用群組函數」錯誤

問題:

旨在識別至少兩個供應商提供的零件的查詢導致「無效使用群組功能」錯誤:

<code class="language-sql">SELECT c1.pid                      -- Select part ID (pid)
FROM Catalog AS c1                 -- From the Catalog table
WHERE c1.pid IN (                  -- Where pid is in the set:
    SELECT c2.pid                  -- Of pids
    FROM Catalog AS c2             -- From the Catalog table
    WHERE c2.pid = c1.pid AND COUNT(c2.sid) >= 2 -- Incorrect: COUNT in WHERE clause
);</code>
登入後複製

問題:

錯誤源自於COUNT()函數放置不當。 WHERE 子句在 分組之前 過濾各個行,使聚合函數 COUNT() 在此上下文中無效。

解:

正確的方法是使用 HAVING 子句,該子句在 分組和聚合之後過濾

<code class="language-sql">SELECT c1.pid
FROM Catalog AS c1
WHERE c1.pid IN (
    SELECT c2.pid
    FROM Catalog AS c2
    GROUP BY c2.pid
    HAVING COUNT(c2.sid) >= 2
);</code>
登入後複製

說明:

修改後的查詢使用 CatalogpidGROUP BY c2.pid 表分組。 然後,HAVING 子句過濾這些群組,僅保留供應商 ID (sid) 計數大於或等於 2 的群組。這可以正確識別至少有兩個供應商的零件。 然後,外部查詢從這些過濾組中選擇 pid 值。

以上是如何修復子查詢中 MySQL 的「無效使用群組函數」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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