gpt4 book ai didi

mysql - 如何将数据库中没有记录的日期添加到MySQL结果中?

转载 作者:行者123 更新时间:2023-11-29 08:56:09 25 4
gpt4 key购买 nike

考虑以下“消息”表:

_date        message
-------------------------
2012-02-22 hello
2012-02-22 another msg!
2012-03-05 foobar
2012-03-22 testing
2012-03-22 goodbye
2012-03-22 test test

我想计算每天的消息数量,但也想包括所有没有消息的日子。假设我想统计2012-02-01到2012-03-29之间的所有消息,那么查询结果应该是:

_date        messsages
----------------------
2012-02-01 0
2012-02-02 0
...
2012-02-22 2
2012-02-23 0
...
2012-03-01 0
2012-03-02 0
2012-03-03 0
2012-03-04 0
2012-03-05 1
...
2012-03-22 3
...
2012-03-29 0

这在 MySQL 中可能吗?

最佳答案

类似这样的事情应该可以做到 -

SELECT date_range.`date`, COUNT(messages._date)
FROM (
SELECT '2012-02-01' + INTERVAL (id - 1) DAY AS `date`
FROM dummy
WHERE id BETWEEN 1 AND 58
ORDER BY id ASC
) AS date_range
LEFT JOIN messages
ON date_range.`date` = messages._date
GROUP BY date_range.`date` ASC

对于此示例,虚拟表是具有基于整数的 id 字段的任何表,该字段具有涵盖所需日期范围的连续集。在这种情况下,您需要 1 到 58 之间的 id。

关于mysql - 如何将数据库中没有记录的日期添加到MySQL结果中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9928463/

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