ホームページ >データベース >mysql チュートリアル >MySQL エラー:「グループ関数の使用が無効です」—WHERE と HAVING: いつどちらを使用する必要がありますか?

MySQL エラー:「グループ関数の使用が無効です」—WHERE と HAVING: いつどちらを使用する必要がありますか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-11 22:42:41844ブラウズ

MySQL Error:

MySQL エラー: グループ化関数

の使用が無効です

MySQL の使用時に「グループ化関数の使用が無効です」エラーが発生した場合は、WHERE 句と HAVING 句の違いを必ず理解してください。

提供されたクエリの目標は、少なくとも 2 つのサプライヤーから供給される部品を検索することです。最初に、WHERE 句を使用して、各 pid を sid を計算するサブクエリの出力と比較しようとします。ただし、MySQL は集計の前に WHERE を実行するため、このアプローチは効果的ではありません。

正しい解決策は、HAVING 句を使用することです。 HAVING は、COUNT() などの集計関数の結果をフィルター処理して、集計後の計算を実行できるようにします。回答に示すように、HAVING を使用してサブクエリを書き換えます:

<code class="language-sql">(
  SELECT c2.pid
  FROM Catalog AS c2
  WHERE c2.pid = c1.pid
  HAVING COUNT(c2.sid) >= 2
)</code>

望む結果を得ることができます。 HAVING 句を使用すると、少なくとも 2 つのサプライヤーを持つ部品のみが最終出力に含まれるようになります。

以上がMySQL エラー:「グループ関数の使用が無効です」—WHERE と HAVING: いつどちらを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。