0"?-6ren"> 0"?-由于 mySQL 的语法不允许此语句(WHERE 部分中不能使用计数元素): Illegal syntax: SELECT COUNT(x) AS amount ... WHERE amount > -6ren">
gpt4 book ai didi

mysql - 如何让它工作 "SELECT COUNT(x) AS amount ... WHERE amount > 0"?

转载 作者:行者123 更新时间:2023-12-01 00:27:38 26 4
gpt4 key购买 nike

由于 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com