我有一个看似简单的问题,但我自己没有解决它
我有这个mysql表,其中包含网站访问者的统计信息
+-----------------------------+
+ date | visits +
+-----------------------------+
+ 2014-03-01 | 198 +
+ 2014-03-02 | 259 +
+ 2014-03-03 | 94 +
+-----------------------------+
我有这个查询
SELECT * FROM statistics WHERE date >= '2014-03-01' and date <= '2014-03-30';
我的问题是,如果我可以用一个SQL查询完成整个月,那么我可以得到这个输出:
+-----------------------------+
+ date | visits +
+-----------------------------+
+ 2014-03-01 | 198 +
+ 2014-03-02 | 259 +
+ 2014-03-03 | 94 +
+ 2014-03-04 | 0 +
+ 2014-03-05 | 0 +
+ 2014-03-06 | 0 +
...
+ 2014-03-30 | 0 +
+-----------------------------+
非常感谢你。
答案 0 :(得分:0)
一个SQL查询是什么意思? 在这里,您还使用一个查询。
&#34; SELECT * FROM statistics WHERE date&gt; =&#39; 2014-03-01&#39;和日期&lt; =&#39; 2014-03-30&#39;&#34;
答案 1 :(得分:0)
我认为你可以使用Between子句。你可以写一个像
那样的“SELECT * FROM statistics WHERE date BETWEEN'2014-03-01'''2014-03-30'”。
答案 2 :(得分:0)
两件事。
SQL无法(轻松)创建没有数据的行。这意味着如果2014-03-05没有行,那么你就不会获得一行,更不用说计数为0的那一行。唯一真正的方式来创建&#34;这样的空行是另一个表,其中包含LEFT JOIN
到的日期列表。但这非常简单。
其次,你可以花一整个月的时间。值得一提的是:
WHERE date BETWEEN '2014-03-01' AND DATE_ADD('2014-03-01', INTERVAL 1 MONTH)