mysql 按时间分组,中间日期不连续,把日期补全的方法

例如你统计一周的数据,然后中间的数据都不存在会出现只有2条数据
例如:2019-08-01 ,2019-08-07;mysql排序只有2条,你需要8条数据
吧中间补全,可以用这种方式

SELECT data.day,IFNULL(data.count, 0), day_list.day as date from
(select DATE_FORMAT(create_at, ‘%Y-%m-%d’) day, count(id) count from user GROUP BY day) data
right join
(SELECT @date := DATE_ADD(@date, interval 1 day) day from
(SELECT @date := DATE_ADD(‘2019-08-01’, interval -1 day) from user)
days limit 5) day_list on day_list.day = data.day

我实现不了,一般就出现了2条,可以贴下user表的表结构和一点数据吗?sql和你一样,表数据 INSERT INTO user(id, day, create_at) VALUES (1, ‘2019-08-01’, ‘2019-08-01 12:01:01’); INSERT INTO user(id, day, create_at) VALUES (2, ‘2019-08-10’, ‘2019-08-10 12:01:01’); 表就这3个字段。我执行了你的sql, date就一个2019-08-01一个2019-08-02,是我那个地方有问题嘛
这是我遇到的问题
我发现的原因是:这个有限制,那个limit 28如果大于那张表的总条数显示也是只会显示那么多。例如你数据库总共2条数据,limit 28也只会显示出来2条,只有总条数大于28的时候才会显示limit的条数

你可能感兴趣的:(mysql 按时间分组,中间日期不连续,把日期补全的方法)