我有以下结构:
id | some_foreign_id | date
1 5 2015-09-29 23:14:23
2 5 2015-09-29 14:13:21
3 8 2015-09-28 22:23:12
对于指定的 some_foreign_id
,我想返回过去 2 周内每天该表中的行数。我创建了这个:
SELECT DATE(t.sent_at), COUNT(*)
FROM table t
INNER JOIN sometable st ON st.some_id = t.id
INNER JOIN someOtherTable sot ON sot.someother_id = st.id
WHERE t.sent_at >= DATE_ADD(CURDATE(), INTERVAL -14 DAY)
AND t.some_foreign_id = 5
GROUP BY DATE(t.sent_at);
它显示了一些结果,但是:
- 如果当天有 0 条记录,则不显示 0。
- 将间隔更改为 -15 会更改自最后一天以来的计数 - 不知道为什么。
我怎样才能正确地做到这一点?
最佳答案
要解决 1.,您需要左连接到类似 this 的内容。并使用IFNULL()
要解决 2.(或尝试),请尝试将您的查询更改为此(我建议您先解决此问题):
SELECT DATE(t.sent_at), COUNT(*)
FROM table t
INNER JOIN sometable st ON st.some_id = t.id
INNER JOIN someOtherTable sot ON sot.someother_id = st.id
WHERE DATE(t.sent_at) >= DATE(DATE_ADD(CURDATE(), INTERVAL -14 DAY))
AND t.some_foreign_id = 5
GROUP BY DATE(t.sent_at);
关于mysql - 按天从数据库获取计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32965628/