首頁 > 資料庫 > mysql教程 > 為什麼 MySQL 會拋出「無效使用群組函數」以及如何使用 HAVING 修復它?

為什麼 MySQL 會拋出「無效使用群組函數」以及如何使用 HAVING 修復它?

Mary-Kate Olsen
發布: 2025-01-11 22:31:44
原創
920 人瀏覽過

Why MySQL Throws "Invalid use of group function"

MySQL 錯誤:"Invalid use of group function" 的原因及解決方法

在給定的 MySQL 查詢中,「Invalid use of group function」 錯誤是因為在 WHERE 子句中使用了 COUNT 函數。 WHERE 子句在分組之前過濾行,導致錯誤。

使用 HAVING 子句解決問題

要解決此問題,請將 WHERE 子句替換為 HAVING 子句。 HAVING 子句在分組之後過濾群組。在本例中,HAVING 子句應檢查供應商 ID (sid) 的計數,以確保它大於或等於 2。

以下是更正後的子查詢:

(
    SELECT c2.pid
    FROM Catalog AS c2
    WHERE c2.pid = c1.pid
    HAVING COUNT(c2.sid) >= 2
)
登入後複製

包含 HAVING 子句的完整查詢

使用更新後的子查詢,完整的查詢變成:

SELECT c1.pid                      -- 选择 pid
FROM Catalog AS c1                 -- 来自 Catalog 表
WHERE c1.pid IN (SELECT c2.pid   -- 其中 pid 在以下集合中:
    FROM Catalog AS c2             -- pids
    WHERE c2.pid = c1.pid
    HAVING COUNT(c2.sid) >= 2     -- 至少有两个对应的 sids
);
登入後複製

此查詢將傳回至少由兩個不同供應商提供的零件的 pid。

以上是為什麼 MySQL 會拋出「無效使用群組函數」以及如何使用 HAVING 修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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