【发布时间】:2014-06-19 07:40:48
【问题描述】:
我正在尝试通过当前一周(过去 7 天)的列表获取所有用户尝试的 COUNT
此查询有效,但如果日期不存在则不返回 0:
SELECT COUNT(*) AS attempt_count,
DATE_FORMAT(attempt_date,'%Y/%m/%d') AS attempt_date
FROM users_attempts
WHERE DATE_SUB(attempt_date, INTERVAL 1 DAY) > DATE_SUB(DATE(NOW()), INTERVAL 1 WEEK)
GROUP BY DAY(attempt_date) DESC;
这个查询返回当前最后一周每天所有尝试的 COUNT,我得到了这个(我只有 1 条记录):
attempt_count | attempt_date
1 2014/06/19
我想要这个结果:
attempt_count | attempt_date
1 2014/06/19
0 2014/06/18
0 2014/06/17
0 2014/06/16
0 2014/06/15
0 2014/06/14
0 2014/06/13
非常感谢
【问题讨论】:
-
数据库中有那些 0 的日期吗?如果没有,那么您需要使用以下技术来获取结果中缺少的日期stackoverflow.com/questions/23300303/…
-
你可以离开加入一个日历表,每天一行,你的查询得到适当的结果
-
@mc110 我没有任何日历表。
-
制作一个。 SELECT 语句不会首先创建不在数据库中的数据。您可以在客户端执行此操作,也可以在存储过程中执行此操作。但是,如果您想让 SELECT 生成这些日期,则需要将它们放在某个表中。
-
@Frazz 你是对的,但我正在尝试 Abhik Chakraborty 的技术,创建一个临时日历表,我认为是可能的。