我有一个情况,在这里我需要从过去30天获取数据,并且获取所有日期,即使数据不存在于给定日期的mysql中。如何在MySQL中选择最后30天的日期,即使日期不在mysql中?
我目前的查询是这样的。 LASTUPDATED是一个时间戳列
SELECT Date(a.lastUpdated), count(*)
FROM table1 a
LEFT JOIN table2 b on (a.pgid = b.prod_id)
WHERE Date(lastUpdated) BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()
GROUP BY Date(a.lastUpdated);
这返回的结果是这样
Date(a.lastUpdated) count(*)
2016-03-23 1
2016-03-24 14
2016-03-30 65
2016-03-31 1
2016-04-02 1
我的问题是,如果可能,列出所有的日期,即使数据是不是在MySQL。或者任何其他解决方法。我正在使用PHP 7.0。
我环顾了一下,但没有找到与我的要求相关的任何内容。
有没有简单的方法恕我直言。你可能会发现这个有用的,allthough不直接相关:http://stackoverflow.com/questions/1046865/mysql-select-all-dates-in-a-range-even-if-no-records-present – Gogol
如果你的数据没有可用于选择和过滤的信息,则它没有可用于选择和过滤的信息。想象一下,你对数据*关于*的知识一无所知,并且你被要求手动检查它并查找最近30天的记录。你找到没有日期的记录。你是做什么?除非你的教师告诉你如何处理无日期条目,否则你将不得不忽视它们。同样在这里 - 要么说什么需要发生,要么SQL忽略它们。 –
定义'数据不存在于mysql'中 –