由于 mySQL 的语法不允许此语句(WHERE 部分中不能使用计数元素):
Illegal syntax:
SELECT COUNT(x) AS amount ... WHERE amount > 0
但是如何通过 WHERE 处理 COUNTed 元素?
最佳答案
编辑
请注意,您的原始查询可能与您认为的不同。您可能需要 WHERE x > 0
代替:
SELECT COUNT(x) AS amount ... WHERE x > 0
这是因为如果存在任何大于 0 的 x 值,HAVING amount > 0
本质上是没有意义的。MySQL 将自动分组并包含所有行,计算每一行。看起来您想知道 x 中具有非零数量的行数,因此您需要使用 WHERE 指定只有那些行应该符合要计算的原始条件。请参阅下面的示例,了解需要聚合函数的示例。具有 HAVING。
原答案:
您可以使用 HAVING
执行此操作。语法与 WHERE
完全相同,但它是在聚合之后计算的。
SELECT COUNT(x) AS amount ... HAVING amount > 0
区别很重要,因为它允许您限制使用 WHERE 计算哪些行,然后限制使用 HAVING 返回的行。
例如,假设我想知道每个部门在销售额低于 10 美元时赚了多少钱,前提是销售额超过 1000 美元:
SELECT
SUM(amount) as total_sales
...
WHERE amount < 10.0
GROUP BY department
HAVING total_sales > 1000.0
关于mysql - 如何让它工作 "SELECT COUNT(x) AS amount ... WHERE amount > 0"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11437546/