gpt4 book ai didi

php - MYSQL SELECT SUM() BY DATE IF NO MATCH RETURN 0

转载 作者:可可西里 更新时间:2023-11-01 08:20:53 24 4
gpt4 key购买 nike

我已经将三个表相互连接起来。我正在查询关键字 + 统计信息。

我需要按日期范围获取数据,并且如果没有该特定日期范围内的数据我希望它返回 0 个统计信息

假设我的查询是:
SELECT keyword,SUM(stat) FROM keywords WHERE date >='2012-07-10' GROUP BY keyword;

它会返回
|我的关键词1|3|
|我的关键词2|6|

示例表格内容:
|编号 |关键字 |统计 |日期 |关键字组 |
| 1 |我的关键字 1 | 2 | 2012-07-11 | 1 |
| 2 |我的关键字 1 | 1 | 2012-07-12 | 1 |
| 3 |我的关键字 2 | 6 | 2012-07-11 | 1 |
| 4 |我的关键字 3 | 10 | 2012-07-09 | 1 |

但是有些关键字在该日期范围内没有统计数据
但我仍然想让那些关键字显示为 0 作为统计信息。

像这样:

|我的关键词1|3|
|我的关键词2|6|
|我的关键字 3|0|

问题是 where 子句会阻止未找到的值,是否有解决方法。
正如我所说的,我有三个具有关系的表,我使用 LEFT JOIN 来查询数据,为简化起见,我将该部分排除在示例查询之外。

表:事件
编号
姓名

表:关键字组
编号
姓名
事件

表:关键字数据
编号
关键字
统计
日期
关键字组

最佳答案

假设您使用左连接正确连接表,请使用:

select keyword, ifnull(sum(stat),0) ... group by keyword

如果是 WHERE 子句在应用分组之前过滤掉一些统计信息,那么您需要将日期条件移动到 LEFT JOIN 条件中,即。

from KeywordGroup left join KeywordData on ... and date > '2012-07-10'

但如果没有看到实际的查询,我无法进一步提供帮助。 :-)

关于php - MYSQL SELECT SUM() BY DATE IF NO MATCH RETURN 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11504746/

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