gpt4 book ai didi

mysql - 如何按日期查询 SUM 和 WHERE,但该行仍然存在

转载 作者:太空宇宙 更新时间:2023-11-03 10:57:50 25 4
gpt4 key购买 nike

如何查询 mydate 之间的 SUM 字段总数和 WHERE 但行还在,只需将值总数更改为 0。请查看我下面的解释:

我有两个表,名称分别是category_resultresult_values

下面是表 category_result 的结构和值:

id       name   
1 One
2 Two
3 Three
4 Four
5 Five

下面是表 result_values 的结构和值:

id_category_value       mydate         total
1 2013-04-24 2
2 2013-04-25 3
3 2013-05-10 1
4 2013-06-20 8
5 2013-06-21 3
5 2013-06-22 2
5 2013-06-23 2

我现在的查询是:

SELECT c.name, SUM(rv.total) as total_all FROM category_result c
LEFT JOIN result_values rv ON c.id=rv.id_category_value
WHERE rv.mydate >= '2013-05-01' AND rv.mydate <= '2013-07-01'
GROUP BY c.id

然后会得到如下结果:

name      total_all
Three 1
Four 8
Five 7

但是我想要的不是这样的,我想要的结果大概是这样的:

name      total_all
One 0
Two 0
Three 1
Four 8
Five 7

所以我希望名字仍然存在,但是如果上面的 mydate 在哪里,那么名字 1 和 2 没有被 mydate 列出,所以我希望行中的值 total_all 为 null 或 0。

提前致谢。

最佳答案

您只需要将您的 where 子句移动到连接中。否则,这将排除所有没有日期的 category_results:

SELECT c.name, COALESCE(SUM(rv.total),0) as total_all 
FROM category_result c
LEFT JOIN result_values rv ON c.id=rv.id_category_value AND rv.mydate >= '2013-05-01' AND rv.mydate <= '2013-07-01'
GROUP BY c.id

请注意,我们使用 COALESCE,否则一和二的总和将为空而不是 0。

关于mysql - 如何按日期查询 SUM 和 WHERE,但该行仍然存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18734806/

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