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 条件过滤出特定的组,也可以使用多个分组标准进行分组。

原文地址:https://www.cnblogs.com/xiaoweiblogs/p/10709455.html