mysql查询最近7天的数据,没有数据自动补0

问题描述

查询数据库表中最近7天的记录

select count(*),date(create_time) as date from task where datediff(now(),create_time)<=6  group by day(create_time); 

但是发现某一天没有数据,结果中没有显示当天(2017-08-28)的数据

这里写图片描述

解决思路

  1. 思路一: 可以在自己的程序中做额外的补零处理

  2. 思路二: 构建一个最近七天的结果集,然后和查询的结果集合做left join(本文采用第二种方式)

select a.click_date,b.count
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 date(create_time) as datetime, count(*) as count
  from arms_task
  group by date(create_time)
) b on a.click_date = b.datetime;

当天2017-08-28结果显示为NULL

这里写图片描述

需要把NULL设置为0,利用ifnull函数即可

select a.click_date,ifnull(b.count,0) as count
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 date(create_time) as datetime, count(*) as count
  from arms_task
  group by date(create_time)
) b on a.click_date = b.datetime;

这里写图片描述

  • 29
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
小型酒吧在线管理系统MinibarCMS是使用Java MVC模式 + Mysql数据库开发的一个简单的文章管理系统,代码简单,数据库也非常mini,特别适合初学者研究与学习! V2版本中对前端进行了重构,一个全新的平面化设计的前端,更新内容如下: 1、增加14个Sevelet来处理相关数据,减少了多余的JSP页面 2、FCKediter更改为ueditor 3、前端使用JQ+JQ UI的方式重新布局和实现相关功能 4、登陆增加了Ajax查询用户名是否正确 5、注册页面增加了Ajax查询用户名是否存在,验证码同样使用了Ajax的方式直接在注册页面进行验证,无需跳转后再验证,提高了用户体验度 6、所有表单提交都增加了实时验证功能 7、所有页面都进行了权限设置,游客无法访问被限制的页面 8、后台登陆,进行了严格的权限分配,不是管理员的用户无法登陆,在V1.0版本中,任意用户可以随意登陆后台 9、增加了Json数据,可以通过Jsonp的方式调用和读取相关Json数据 10、优化了SEO功能 11、减小了整个网站的体积 12、增加了FontAwesome字体图标 13、优化了Javamail无法发送邮件及发送失败的问题 14、增加7自动登陆功能,使用cookie的形式实现7自动登录 15、增加了DB.properties,配置Mysql数据库链接地址、用户名、密码,更加人性化,链接数据库只需修改DB.properties中的相关信息即可,无需修改源码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值