mysql Invalid use of group function的解决办法


错误语句:SELECT
s.SID,
s.Sname,
AVG(a.score)
FROM
student s
LEFT JOIN sc a ON s.SID = a.SID

WHERE AVG(a.score) > 60
GROUP BY
s.SID
正确语句:

SELECT
s.SID,
s.Sname,
AVG(a.score)
FROM
student s
LEFT JOIN sc a ON s.SID = a.SID

GROUP BY
s.SID

HAVING(a.score) >60

原因:

where 子句的作用是对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。

having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM