MySQL数据查询后日期不是连续的,如何操作能够把日期补上?对应的数据值可以是0,也可以是空
PS:不要关联其他表,代码尽可能少点
1、方法一:
拿MySQL的user表举个例子:
SELECT data.day,IFNULL(data.count, 0), day_list.day as date
from
(select DATE_FORMAT(password_last_changed, '%Y-%m-%d') day, count(user) count from user GROUP BY day) data
right join
(SELECT @date := DATE_ADD(@date, interval 1 day) day from
(SELECT @date := DATE_ADD('2023-02-01', interval -1 day) from dual) -- 随便一个表,但这个表的数据量一定要大于你要自增连续日期的表条数(或者更多)这个数量才可以,不然查询的数据数量会少。假如你想查询365天,你可以随便找一张数量大于365条的表放在这里
days ) day_list on day_list.day = data.day;
方法二:创建一张日期连续的表
create table table_a (date_continuous varchar(32));
insert into table_a values ('2023-01-01'),('2023-01-02')...
select
t1.date_continuous,
t2.数据列
from table_a t1 left join 目标表 t2
on t1.date_continuous = t2.date;
ifnull(日期,0)