mysql逐日选择日期

标签 mysql sql

我有如下所示的表格:

                      login
          date                     user    
       2016-11-23                   1
       2016-11-23                   2
       2016-11-23                   3
       2016-11-25                   2
       2016-11-25                   5
       2016-11-27                   1

从上表中我想得到的是这样的:

      date                   count(*)
   2016-11-21                   0
   2016-11-22                   0    
   2016-11-23                   3
   2016-11-24                   0
   2016-11-25                   2
   2016-11-26                   0
   2016-11-27                   1

但是,因为只有日期 2016-11-232016-11-252016-11-27,当我这样查询:

select date, count(*)
from login
where date between (current_date()-interval 7 day) and current_date()
group by date
order by date asc

它得不到我真正想要得到的结果。从我的 login 表中可以得到这个结果吗?

最佳答案

一种方式是在JOIN之前生成所有天数

select GenDate, count(Date)
from login
right join
(select a.GenDate 
from (
    select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as GenDate
    from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a
    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b
    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c
) a
where a.GenDate between (current_date()-interval 7 day) and current_date())x
ON x.GenDate=login.Date
group by GenDate
order by GenDate asc

关于mysql逐日选择日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40827371/

相关文章:

php - 从表中提取最新的帖子

mysql - Exim转发路由器

sql - IP 地址范围的 MS Access SQL 查询

mysql - 'extra data' 表的多个外键

mysql - 如何将matlab数据表插入MySQL数据库

sql - 在表中创建与特定模式匹配的列

MySQL 子查询与 LIMIT 替代方案

Mysql - 将字符串与另一个 sql 结果连接起来

sql - PLS-00103 : Encountered the symbol "end-of-file" in simple update block

mysql - 我如何知道一个表的主键字段值已在 MySQL 中的任何其他相关表中使用?