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 サイトの他の関連記事を参照してください。