葬空吟 2023-04-18 09:54 采纳率: 61.3%
浏览 35
已结题

MySQL数据日期补空

MySQL数据查询后日期不是连续的,如何操作能够把日期补上?对应的数据值可以是0,也可以是空
PS:不要关联其他表,代码尽可能少点

img

  • 写回答

3条回答 默认 最新

  • AllenGd 领域专家: 大数据技术领域 2023-04-18 12:00
    关注

    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;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月19日
  • 已采纳回答 4月19日
  • 创建了问题 4月18日