MySQL の「無効なグループ化関数の使用法」エラーを解決する
MySQL で「無効なグループ化関数の使用」エラー メッセージが表示された場合、WHERE 句と HAVING 句の違いを理解することが重要です。
質問:
クエリは、少なくとも 2 つのサプライヤーから提供された部品 ID (pid) を取得します。ただし、次のエラーが表示されます:
<code>1111 - Invalid use of group function</code>
理由:
このエラーは、サブクエリでの WHERE 句の誤った使用が原因で発生します。行をグループ化して集計する前に、WHERE 句を使用して行をフィルタリングしようとしていますが、これは予期しない動作です。
解決策:
解決策は、WHERE 句を HAVING 句に置き換えることです。 HAVING は、MySQL が行をグループ化し、集計を計算した後に実行され、これらの集計に基づいて結果をフィルタリングできるようになります。
サブクエリを書き換えます:
サブクエリの WHERE 句を HAVING 句に置き換えます:
<code>( -- pid属于以下集合: SELECT c2.pid -- pids集合 FROM Catalog AS c2 -- 来自catalog表 WHERE c2.pid = c1.pid HAVING COUNT(c2.sid) >= 2)</code>
手順:
この変更されたサブクエリは、pid でグループ化し、各 pid に関連付けられた個別のサプライヤー ID (sid) を計算した後、行を正しくフィルター処理します。 HAVING 句を使用すると、カウントが少なくとも 2 の行のみが選択されるようになります。
HAVING 句を適切に使用すると、「グループ化関数の使用法が無効です」エラーを解決し、必要な結果を得ることができます。
以上がMySQL の「グループ関数の無効な使用」エラーを修正する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。