您可以生成自己的日历表中的子查询
SET @start_date = '2014-11-01';
SELECT MyData.dt,IFNULL(MyData.Records,0) Records FROM
(
SELECT dt FROM
(SELECT num,(@start_date + INTERVAL num DAY) dt FROM
(SELECT h*100+t*10+u num FROM
(SELECT 0 h UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION
SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) A,
(SELECT 0 t UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION
SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) B,
(SELECT 0 u UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION
SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) C) AA) AAA
WHERE dt <= DATE(NOW())
ORDER BY num
) Calendar LEFT JOIN
(
SELECT
COUNT(user_id) AS `Records` ,
DATE(FROM_UNIXTIME(`tstamp`)) dt
FROM `user`
WHERE FROM_UNIXTIME('tstamp') >= '2014-11-00'
GROUP BY DATE(FROM_UNIXTIME(`tstamp`))
LIMIT 200
) MyData USING (dt);
试试看!
CAVEAT:此日历子查询仅在999天之前返回。
可以延伸回到9999天这样
SET @start_date = '2014-11-01';
SELECT MyData.dt,IFNULL(MyData.Records,0) Records FROM
(
SELECT dt FROM
(SELECT num,(@start_date + INTERVAL num DAY) dt FROM
(SELECT th*1000+h*100+t*10+u num FROM
(SELECT 0 th UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION
SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) Z,
(SELECT 0 h UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION
SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) A,
(SELECT 0 t UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION
SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) B,
(SELECT 0 u UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION
SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) C) AA) AAA
WHERE dt <= DATE(NOW())
ORDER BY num
) Calendar LEFT JOIN
(
SELECT
COUNT(user_id) AS `Records` ,
DATE(FROM_UNIXTIME(`tstamp`)) dt
FROM `user`
WHERE FROM_UNIXTIME('tstamp') >= '2014-11-00'
GROUP BY DATE(FROM_UNIXTIME(`tstamp`))
LIMIT 200
) MyData USING (dt);
你需要有一个日历表,也留下了日历表连接来获得与零计数行。 – radar