如何解决SQL语句中的MySQL Error 1111(无效使用分组函数)错误
问题分析与解决
你的SQL错误出在HAVING子句的写法上,错误信息ERROR 1111 (HY000): Invalid use of group function的原因是:
NoOfMovies是你给count(1)起的别名,它本身就是分组后的聚合结果,没必要再对它使用count()聚合函数。- 同时MySQL不支持在聚合函数中引用SELECT子句里定义的别名,这会触发函数嵌套使用的语法错误。
修正后的SQL写法
写法一:直接使用聚合函数表达式
select count(1) as NoOfMovies, rating from film where rating <> 'G' group by rating having count(1) > 200;
写法二:直接引用别名(MySQL支持HAVING引用SELECT别名)
select count(1) as NoOfMovies, rating from film where rating <> 'G' group by rating having NoOfMovies > 200;
两种写法逻辑完全一致,都能正确筛选出分组后电影数量超过200的评级类别。
内容的提问来源于stack exchange,提问作者piyush
相关产品推荐
相关产品推荐

