難解なエラー 1111: グループ関数の無効な使用
この問題は、AVG などの集計関数を使用しようとすると発生します。 WHERE 句を使用すると、謎のエラー 1111 が発生します(HY000).
問題の核心を理解する
SQL では、集計関数が WHERE 句に含まれるサブクエリ内にカプセル化されていない限り、WHERE 句に常駐できないと規定されています。 HAVING 句または選択リスト。さらに、集計操作の対象となる列は、外部コンテキストから参照する必要があります。
WHERE 句によるエラーの解決
このエラーを修正する 1 つの方法は、次の方法を使用することです。以下に例を示すように、WHERE 句内のサブクエリ:
select * from staff where salary > (select avg(salary) from staff)
この例では、平均給与はサブクエリを使用して計算され、各個人の給与と比較されます。
HAVING 句によるエラーの解決
あるいは、HAVING 句を利用して確立することもできます。ここに示すように、グループまたは集合体の検索条件:
select deptid,COUNT(*) as TotalCount from staff group by deptid having count(*) > 2
HAVING句は、3 つ以上のメンバーを持つグループのみが結果として返されることを指定します。
HAVING 句に関する追加の解説
HAVING 句が通常使用されることに注意してください。 GROUP BY 句と組み合わせて使用します。ただし、GROUP BY が存在しない場合、HAVING は WHERE 句と同様に動作します。
以上がMySQL エラー 1111: グループ関数の無効な使用が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。