首頁 > 資料庫 > mysql教程 > 如何正確使用MySQL子查詢中的GROUP函數來找出多個供應商供應的零件?

如何正確使用MySQL子查詢中的GROUP函數來找出多個供應商供應的零件?

DDD
發布: 2025-01-11 22:46:45
原創
947 人瀏覽過

How to Correctly Use GROUP Functions in MySQL Subqueries to Find Parts Supplied by Multiple Suppliers?

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

本指南解決了查詢涉及多個供應商和零件的資料時經常遇到的常見 MySQL 錯誤「無效使用群組函數」。 目標是找到至少兩個不同供應商提供的零件。

核心問題在於在子查詢中處理 WHERE 等聚合函數時誤用 COUNT() 子句。 WHERE 分組之前過濾單一行,而 HAVING 聚合之後過濾行組。 由於我們需要根據每個零件的數量供應商(聚合值)進行過濾,因此至關重要。 HAVING正確的方法涉及使用子查詢來識別符合條件的零件(至少兩個供應商),然後使用

從主查詢中選擇這些零件。 關鍵的變化是在子查詢中將

替換為 INWHERE HAVING更正後的子查詢結構如下圖所示:

此修訂後的子查詢使用
<code class="language-sql">(
    SELECT c2.pid
    FROM Catalog AS c2
    GROUP BY c2.pid
    HAVING COUNT(DISTINCT c2.sid) >= 2
)</code>
登入後複製
按零件 ID 對行進行分組,並使用

過濾這些群組,僅保留具有兩個或多個不同供應商 ID 的群組。 GROUP BY c2.pid 關鍵字確保每個供應商僅被計數一次,即使他們多次供應相同零件。 HAVING COUNT(DISTINCT c2.sid) >= 2 DISTINCT簡而言之,請記住在子查詢中將

與聚合函數一起使用,以根據 MySQL 中的聚合值正確過濾行組。 這種區別是解決「無效使用群組函數」錯誤並準確檢索所需資料的關鍵。

以上是如何正確使用MySQL子查詢中的GROUP函數來找出多個供應商供應的零件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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