mysql 怎么查询结果补0_mysql 查7天数据,无数据的补0怎么写呢?

表里有个字段纪录每次点击的时间,查最近7天每日的数据,但其中可能有几天没数据,怎么把没数据的天数设置为0,sql语句怎么写

据我所知,mysql只能说在null的时候返回其他值(比如

SELECT IFNULL( (SELECT field1 FROM table WHERE id = 123) , 0);

),但像题主这样要补上本来不存在的数据挺难,可能别人会有方法。

我想说的是,就算sql能搞定这件事,也最好不要放sql,而是放在你的应用程序里。这种逻辑性的东西放程序里更好管控,也更方便理解

先构建一个最近7天的结果集,然后和查询出的结果集做Left Join,如:

select a.click_date, ifnull(b.click_qty, 0)

from (

select * from (

SELECT curdate() as click_date

union all

SELECT date_sub(curdate(), interval 1 day) as click_date

union all

SELECT date_sub(curdate(), interval 2 day) as click_date

union all

SELECT date_sub(curdate(), interval 3 day) as click_date

union all

SELECT date_sub(curdate(), interval 4 day) as click_date

union all

SELECT date_sub(curdate(), interval 5 day) as click_date

union all

SELECT date_sub(curdate(), interval 6 day) as click_date

)

) a left join (

select click_date, count(*) as click_qty

from click_log_table

group by click_date

) b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值