mysql - 按天从数据库获取计数

标签 mysql

我有以下结构:

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);

它显示了一些结果,但是:

  1. 如果当天有 0 条记录,则不显示 0。
  2. 将间隔更改为 -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/

相关文章:

mysql - Nutch 抓取文档的 Elasticsearch 映射面临问题

java - jsp在表单上控制服务器端

mysql - Timestampdiff sql 不起作用

php - 从 1 个数据库中的 100 个表中选择

mysql - 如何将 "empty"POINT() 几何值输入到 POINT 类型的 MySQL 字段中?

php - 在 PHP 中编辑 Access 数据库

MySql #2014 - 命令不同步;调用存储过程时不能运行此命令

php - 在 PHP 中创建链接的点击计数

mysql - 减少 Google Cloud SQL 中的内存使用

mysql - 在 Mysql 中,如何使用性能模式查找哪些查询导致 cpu% 增加了多少?