gpt4 book ai didi

mysql - 尽管不存在数据,但聚合给出的结果为 0

转载 作者:行者123 更新时间:2023-11-28 23:24:52 25 4
gpt4 key购买 nike

有以下带连接的 sql:

SELECT sum(r) AS amount
FROM rep.stats
JOIN rep.valdata
ON rep.valdata.id = rep.stats.data_id
WHERE rep.valdata.custid = 3657 AND
rep.stats.sdatetime LIKE '2014-09-29%'

问题,尽管没有可用数据,但我的 ResultSet 给我一行值为 0 的结果。我希望没有结果集。怎么了?是因为 sum(r) 默认返回 0 吗?

这给我带来了麻烦,因为 0 值也是一个值并将被显示。

最佳答案

您的查询是一个没有GROUP BY 的聚合查询。这是一个聚合查询,因为您在 select 子句中有一个聚合函数 (SUM())。

没有group by 的聚合查询将所有行视为一个组——all 表示所有,包括none。因此,这样的查询总是只返回汇总所有行的一行。

也就是说,查询不应返回值 0。它应该返回值为 NULL 的单行。

如果你不想要行,那么添加一个group by:

SELECT sum(r) AS amount
FROM rep.stats s JOIN
rep.valdata v
ON v.id = s.data_id
WHERE v.custid = 3657 AND
s.sdatetime >= '2014-09-29' AND
s.sdatetime < '2015-09-30'
GROUP BY v.custid;

注意事项:

  • 聚合查询现在有一个GROUP BY。这将为每个 返回一行,如果没有组,则不会返回任何行。
  • 表别名使查询更易于编写和阅读。
  • 不要对日期/时间值使用 LIKE。这需要将日期/时间转换为字符串,这可能取决于国际化设置。此外,它还可以防止使用索引。

关于mysql - 尽管不存在数据,但聚合给出的结果为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39787725/

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