ホームページ >データベース >mysql チュートリアル >「select* from Staff where給与 > avg(salary)」が「エラー 1111 (HY000): グループ関数の無効な使用」を返すのはなぜですか?
avg(salary)" 「エラー 1111 (HY000): グループ関数の使用が無効です」を返しますか? " /> avg(salary)" Return "エラー 1111 (HY000): グループ関数の使用が無効です"? " />
クエリ「給与が > のスタッフから * を選択」 avg(salary)" は、"ERROR 1111 (HY000): Invalid use of group function" を返します。この問題は、WHERE 句で集計関数が正しく使用されていないために発生します。
集計関数 (この場合は AVG() など)、特定の条件が満たされない限り、WHERE 句で集計を使用することはできません。HAVING 句または選択リストを含むサブクエリで集計が使用され、集計列が外部参照である場合、集計は WHERE 句で使用できます。 .
アドレス指定エラーが発生した場合は、WHERE 句のサブクエリを使用してクエリを書き直します:
select * from staff where salary > (select avg(salary) from staff)</p> <p>このクエリはサブクエリを使用して平均給与を計算し、平均給与を各スタッフ メンバーの給与と比較します。</p> <p><h4>HAVING の使用句</h4></p> <p>または、HAVING 句を使用して集計データをフィルタリングすることを検討してください。</p> <pre class="brush:php;toolbar:false">select deptid,COUNT(*) as TotalCount from staff group by deptid having count(*) > 2
このクエリの HAVING 句は、結果を 3 人以上のスタッフ メンバーがいる部門に制限します。 .
以上が「select* from Staff where給与 > avg(salary)」が「エラー 1111 (HY000): グループ関数の無効な使用」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。