我在SQL中遇到了一些max(date)问题。 基本上问题是我必须检查id输入的最新日期是否超过1天,然后返回该日期。
id| user_id| send_date
8 | 90 | 2016-10-21 14:31:14
| 10 | 90 | 2016-10-25 09:56:28
| 11 | 18 | 2016-10-22 09:56:28
| 12 | 19 | 2016-10-21 09:56:28
| 13 | 19 | 2016-10-23 09:56:28
| 13 | 20 | 2016-10-25 09:56:28
这是一个更长的SQL的一部分(只是我遇到问题的部分):
SELECT max(h.send_date) as lastSent
FROM history h
WHERE (h.send_date < NOW() - INTERVAL 1 DAY);
现在发生的情况是,不是选择最近输入日期超过1天的行,而是选择最新的超过1天的行,即使表中有更新的条目。
有没有人知道如何更改它,以便SQL只返回最新的日期24h 和最新(用户)在表格中(在示例中,它会不得不归还,因为有一个不到24小时的入口)?
稍微编辑了表格示例。这就是我需要得到的结果(因为2016-10-25 09:56:28,user_ids 90和20被忽略):
18 | 2016-10-22 09:56:28
19 | 2016-10-23 09:56:28
答案 0 :(得分:3)
对于聚合函数,你应该使用having而不是where
SELECT max(h.send_date) as lastSent
FROM history h
having max(h.send_date ) < DATE_SUB(NOW() ,INTERVAL 1 DAY) ;