mysql在where条件下按列分组使用
如何使此查询生效:mysql在where条件下按列分组使用,mysql,group-by,aggregate-functions,mysql-error-1111,Mysql,Group By,Aggregate Functions,Mysql Error 1111,如何使此查询生效: SELECT column1.....,SUM(Hits) AS Hits FROM table WHERE SUM(Hits) > 100 GROUP BY column1..... 问题是where子句,mysql显示错误: Error Code : 1111 Invalid use of group function 我尝试将查询更改为: SELECT column1.....,SUM(Hits) AS Hits FROM table
SELECT column1.....,SUM(Hits) AS Hits
FROM table
WHERE SUM(Hits) > 100
GROUP BY column1.....
问题是where子句,mysql显示错误:
Error Code : 1111
Invalid use of group function
我尝试将查询更改为:
SELECT column1.....,SUM(Hits) AS Hits
FROM table
WHERE Hits > 100
GROUP BY column1.....
这没有帮助
感谢出现错误的原因是,在
WHERE
子句中,您不能使用聚合函数,或使用聚合函数对派生列使用列别名。这些只能在HAVING
子句中使用,该子句需要定义GROUP BY
子句(如果它不存在)
我不建议在GROUP BY
中使用列别名,或在中使用
子句-存在查询无法移植到其他数据库的风险。据我所知,SQL Server是唯一一个支持GROUP BY
或中包含
子句的列别名的数据库
SELECT t.column1....., SUM(t.hits) AS HitsSum
FROM TABLE t
GROUP BY t.column1.....
HAVING SUM(t.hits) > 100
SELECT column1.....,SUM(Hits) AS Sum_Hits
FROM table
GROUP BY column1.....
HAVING Sum_Hits > 100
SELECT t.column1....., SUM(t.hits) AS HitsSum
FROM TABLE t
GROUP BY t.column1.....
HAVING SUM(t.hits) > 100