繁体   English   中英

WHERE子句后无效使用GROUP BY运算符

[英]Invalid use of GROUP BY operator after WHERE clause

以下查询成功返回打印最多的特定用户(按ID):

SELECT file_prints.user_id, user.major, sum(print_pages) FROM `file_prints`
INNER JOIN `user` on file_prints.user_id = user.user_id GROUP BY
file_prints.user_id 
ORDER BY sum(print_pages)

当我引入where子句以消除根本不打印的用户时(即where sum(print_pages)== 0),我编写以下查询:

SELECT file_prints.user_id, user.major, sum(print_pages) FROM `file_prints`
INNER JOIN `user` on file_prints.user_id = user.user_id WHERE
sum(print_pages) > 0 GROUP BY file_prints.user_id 
ORDER BY sum(print_pages)

并得到以下错误:

 #1111 - Invalid use of group function 

如何消除总和(print_pages)为0的结果?

这是因为您不能在WHERE子句中使用聚合函数。 因此,像这样使用HAVING子句:

SELECT file_prints.user_id, user.major, sum(print_pages) 
FROM `file_prints`
INNER JOIN `user` on file_prints.user_id = user.user_id
GROUP BY file_prints.user_id
HAVING sum(print_pages) > 0 
ORDER BY sum(print_pages)

在处理聚合时,您需要改用hading关键字:

SELECT file_prints.user_id, user.major, sum(print_pages) FROM `file_prints`
INNER JOIN `user` on file_prints.user_id = user.user_id 
GROUP BY file_prints.user_id 
HAVING sum(print_pages) > 0 
ORDER BY sum(print_pages)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM