MySQL 錯誤:"Invalid use of group function" 的原因及解決方法
在給定的 MySQL 查詢中,「Invalid use of group function」 錯誤是因為在 WHERE 子句中使用了 COUNT 函數。 WHERE 子句在分組之前過濾行,導致錯誤。
使用 HAVING 子句解決問題
要解決此問題,請將 WHERE 子句替換為 HAVING 子句。 HAVING 子句在分組之後過濾群組。在本例中,HAVING 子句應檢查供應商 ID (sid) 的計數,以確保它大於或等於 2。
以下是更正後的子查詢:
<code class="language-sql">( SELECT c2.pid FROM Catalog AS c2 WHERE c2.pid = c1.pid HAVING COUNT(c2.sid) >= 2 )</code>
包含 HAVING 子句的完整查詢
使用更新後的子查詢,完整的查詢變成:
<code class="language-sql">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 );</code>
此查詢將傳回至少由兩個不同供應商提供的零件的 pid。
以上是為什麼 MySQL 會拋出「無效使用群組函數」以及如何使用 HAVING 修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!