ホームページ >データベース >mysql チュートリアル >MySQL エラー:「グループ関数の使用が無効です」—WHERE と HAVING: いつどちらを使用する必要がありますか?
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 サイトの他の関連記事を参照してください。