gpt4 book ai didi

mysql - 返回最近N天的记录,当不是N中的每一天都有记录?

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:52 24 4
gpt4 key购买 nike

我想检索用户过去 7 天的事件。我要查询的表是多对多的,链接用户、事件和日期。

如果今天是 5 月 7 日,但用户只记录了 5 月 4 日和 2 日的事件,我能否构建一个查询以返回与未记录事件的日期对应的 NULL?

来源

May 2     42
May 4 88

期望的输出

May 1     NULL
May 2 42
May 3 NULL
May 4 88
May 5 NULL
May 6 NULL
May 7 NULL

如何在 MySQL 中完成此操作?

最佳答案

SELECT DISTINCT users, events, dates
FROM table
WHERE dates between date_format(date1, '%Y-%m-%d')
and date_format(date2, '%Y-%m-%d') or NOW() or CURDATE()....
and user = 'username'

这很笼统,但如果您替换名称和日期(可能不需要为您的目的格式化),这将返回所有结果,无论空占位符如何

您可以填充一个 date_reference_table...这是为此的存储过程:

我使用的日期格式只能识别年份和月份,但您可以更改它...

然后您还需要一个内部联接...所以您可以在 date_reference 表上执行一个内部联接,它会吐出上面评论中提到的结果。

分隔符 $$

CREATE PROCEDURE `generate_date_reference_table`(d1 date, d2 date)
BEGIN
declare d datetime;

create table BLMBP.date_reference (d char(7) not null);

set d = d1;
while d <= d2 do
insert into BLMBP.date_reference (d) values (date_format(d, '%Y-%m'));
set d = date_add(d, interval 1 month);
end while;

END$$

关于mysql - 返回最近N天的记录,当不是N中的每一天都有记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10804563/

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