首頁 > 資料庫 > mysql教程 > 為什麼「select* from Staff where salary > avg(salary)」回傳「ERROR 1111 (HY000): Invalid Use of Group Function」?

為什麼「select* from Staff where salary > avg(salary)」回傳「ERROR 1111 (HY000): Invalid Use of Group Function」?

Barbara Streisand
發布: 2024-12-24 07:47:36
原創
260 人瀏覽過

Why Does avg(salary)" 回傳「錯誤 1111 (HY000):無效使用群組功能」? " /> avg(salary)" 回傳「錯誤 1111 (HY000):群組功能使用無效」? " />

故障排除「錯誤1111 (HY000):無效使用群組功能」

嘗試使用以下方式列出收入高於平均薪資的員工查詢「從工資>的員工中選擇*」 avg(salary)」返回「ERROR 1111 (HY000): Invalid use of group function。

解決錯誤

聚合函數,例如本例中的 AVG(),不能除非滿足特定條件,否則可以在 WHERE 子句中使用聚合。根據 SQL 標準,如果在具有 HAVING 子句或選擇清單的子查詢中使用聚合,則聚合可以出現在 WHERE 子句中,並且聚合列是外部參考。

使用WHERE 子句子查詢

要解決該錯誤,請重寫在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子句將結果限制為擁有兩名以上員工的部門。

以上是為什麼「select* from Staff where salary > avg(salary)」回傳「ERROR 1111 (HY000): Invalid Use of Group Function」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板