mysql优化 - mysql 查7天数据,无数据的补0怎么写呢?
伊谢尔伦
伊谢尔伦 2017-04-17 15:26:22
[MySQL讨论组]

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

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
PHPz

据我所知,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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号