获取过去7天内的记录

时间:2013-07-27 10:32:41

标签: mysql sql group-by

我的查询有问题

SELECT
    IFNULL(SUM(a.x), 0) AS x,
    IFNULL(COUNT(*), 0) AS num
FROM a AS a
WHERE (a.`time` >= DATE_SUB(CURDATE(), INTERVAL 7 DAY))
GROUP BY DAY(a.time)

没关系,但是当确切的一天没有记录时,这一天都没有回复。我需要返回0。 怎么做?

1 个答案:

答案 0 :(得分:5)

SELECT
    COALESCE(SUM(a.x), 0) AS x,
    COALESCE(COUNT(*), 0) AS num
FROM a AS a
WHERE (a.`time` >= DATE_SUB(CURDATE(), INTERVAL 7 DAY))
GROUP BY DAY(a.time)

COALESCE - 返回列表中的第一个非空值

但是,我认为您应该在处理@ DevZer0建议的数据时处理此问题。