排除 MySQL 的「無效使用群組函數」錯誤
本指南解決了查詢涉及多個供應商和零件的資料時經常遇到的常見 MySQL 錯誤「無效使用群組函數」。 目標是找到至少兩個不同供應商提供的零件。
核心問題在於在子查詢中處理 WHERE
等聚合函數時誤用 COUNT()
子句。 WHERE
在 分組之前過濾單一行,而 在 HAVING
聚合之後過濾行組。 由於我們需要根據每個零件的數量供應商(聚合值)進行過濾,因此至關重要。
HAVING
正確的方法涉及使用子查詢來識別符合條件的零件(至少兩個供應商),然後使用
替換為 IN
:WHERE
HAVING
更正後的子查詢結構如下圖所示:
此修訂後的子查詢使用
<code class="language-sql">( SELECT c2.pid FROM Catalog AS c2 GROUP BY c2.pid HAVING COUNT(DISTINCT c2.sid) >= 2 )</code>
過濾這些群組,僅保留具有兩個或多個不同供應商 ID 的群組。 GROUP BY c2.pid
關鍵字確保每個供應商僅被計數一次,即使他們多次供應相同零件。 HAVING COUNT(DISTINCT c2.sid) >= 2
DISTINCT
簡而言之,請記住在子查詢中將
以上是如何正確使用MySQL子查詢中的GROUP函數來找出多個供應商供應的零件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!