在MySQL WHERE子句中使用派生值不起作用。有没有办法模拟这种行为?以下是由于WHERE count > 5
行而失败的示例查询:
SELECT
title,
company_id,
count( id ) as count
FROM
table
WHERE
count > 5
GROUP BY
title,
company_id
答案 0 :(得分:8)
汇总不能在WHERE
中使用,而是在HAVING
中使用。您需要添加GROUP BY
子句。
SELECT
title,
company_id,
count( id ) as count
FROM
table
GROUP BY title, company_id
HAVING count > 5
答案 1 :(得分:5)
如果您想使用汇总函数,可以使用having子句,如here所述。
HAVING子句已添加到SQL,因为WHERE关键字不能与聚合函数一起使用。
SELECT
title,
company_id,
count( id ) as count
FROM
table
GROUP BY
title, company_id
HAVING
count > 5
<强>更新强>
在这种情况下,您必须使用HAVING
子句,但我想在使用HAVING
子句时要记住一件事。 MySQL documentation声明:
HAVING子句几乎在最后一次应用,就在项目发送到客户端之前,没有优化。 (在HAVING之后应用LIMIT。)
所以,正如同一文件中所述:
不要将HAVING用于WHERE子句中的项目。
答案 2 :(得分:1)
您无法在聚合列上使用WHERE
。
试试这个:
SELECT
title,
company_id,
count( id ) as cnt
FROM
table
GROUP BY title, company_id
HAVING
cnt > 5