在MySQL WHERE子句中使用派生值不起作用。有没有办法模拟这种行为?下面是一个失败,因为WHERE count > 5
行的一个示例查询:可以在WHERE子句中使用MySQL查询函数吗?
SELECT
title,
company_id,
count(id) as count
FROM
table
WHERE
count > 5
GROUP BY
title,
company_id
在MySQL WHERE子句中使用派生值不起作用。有没有办法模拟这种行为?下面是一个失败,因为WHERE count > 5
行的一个示例查询:可以在WHERE子句中使用MySQL查询函数吗?
SELECT
title,
company_id,
count(id) as count
FROM
table
WHERE
count > 5
GROUP BY
title,
company_id
集料不能用于WHERE
,而是在HAVING
。你将需要添加一个GROUP BY
子句。
SELECT
title,
company_id,
count(id) as count
FROM
table
GROUP BY title, company_id
HAVING count > 5
您可以使用having子句,如果你想与聚合函数工作作为解释here。
HAVING子句被添加到SQL中,因为WHERE关键字不能用于聚合函数。
SELECT
title,
company_id,
count(id) as count
FROM
table
GROUP BY
title, company_id
HAVING
count > 5
UPDATE: 在这种情况下,你必须使用HAVING
条款,但我想指出一点用HAVING
条款时,要牢记。 MySQL documentation指出:
HAVING子句几乎是最后一次应用,就在项目发送给客户端之前,没有进行优化。 (LIMIT是具有后使用。)
所以,作为同一文档中所述:
不要使用具有的项目应该是在WHERE子句中。
您不能在聚合列上使用WHERE
。
试试这个:
SELECT
title,
company_id,
count(id) as cnt
FROM
table
GROUP BY title, company_id
HAVING
cnt > 5