我希望从现在起7天前我的表数据的数量有日期范围。所以,我曾尝试此查询:启用查找日期范围内的所有日期范围中的数据mysql前
SELECT DATE(leads_update_on), IFNULL(COUNT(*),0) leads
FROM tbl_leads
WHERE project_id=4
AND DATE(leads_update_on) >= DATE_SUB('2016-05-11', INTERVAL 6 DAY)
GROUP BY DATE(leads_update_on)
但它返回以下结果:
`DATE(leads_update_on)|leads
----------------------|-----
2016-05-06 | 7
2016-05-07 | 4`
由于其他日期没有任何数据,但我要像下面的结果,如果在特定日期没有数据:
`DATE(leads_update_on)|leads
----------------------|-----
2016-05-05 | 0
2016-05-06 | 7
2016-05-07 | 4
2016-05-08 | 0
2016-05-09 | 0
2016-05-10 | 0
2016-05-11 | 0`
我必须改变我的sql查询,以便我可以找到上述结果。任何帮助将不胜感激。提前致谢。根据要求
样品输入:
`DATE |id
----------------------|-----
2016-05-06 | 1
2016-05-07 | 2
这里只有两个数据存在如此他人日期应该返回0值。它应该像这样的输出:
`DATE(date) |leads
----------------------|-----
2016-05-05 | 0
2016-05-06 | 1
2016-05-07 | 1
2016-05-08 | 0
2016-05-09 | 0
2016-05-10 | 0
2016-05-11 | 0`
但是使用这个查询: -
SELECT DATE(`date`), IFNULL(COUNT(*),0) leads FROM test where DATE(`date`) >= DATE_SUB('2016-05-11', INTERVAL 6 DAY) GROUP BY DATE(`date`)
它返回下面的结果是我不想:
`DATE(date) |leads
----------------------|-----
2016-05-06 | 1
2016-05-07 | 1`
这里有一个解决这个问题的书面记录。 http://www.plumislandmedia.net/mysql/filling-missing-data-sequences-cardinal-integers/ –