ホームページ > データベース > mysql チュートリアル > MySQL が「グループ関数の無効な使用」をスローする理由と、HAVING を使用して修正する方法

MySQL が「グループ関数の無効な使用」をスローする理由と、HAVING を使用して修正する方法

Mary-Kate Olsen
リリース: 2025-01-11 22:31:44
オリジナル
829 人が閲覧しました

Why MySQL Throws "Invalid use of group function"

MySQL エラー:「グループ関数の使用が無効です」の原因と解決策

指定された MySQL クエリで、「グループ関数の無効な使用」エラーは、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>
ログイン後にコピー

このクエリは、少なくとも 2 つの異なるサプライヤーから供給された部品の PID を返します。

以上がMySQL が「グループ関数の無効な使用」をスローする理由と、HAVING を使用して修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート