我正在尝试运行查询以执行以下操作:
返回表中给定日期范围内的所有最新条目。
目前我正在使用这个查询
SELECT id FROM schedule WHERE eventdate BETWEEN '2014-09-01' AND '2014-09-07'
它从如下所示的调度表中返回记录 1、2、3、4、5
时间表。
+----+------------+-------------+-----------------+------------+----------+ | id | eventdate | resource_id | text | added_on | added_by | +----+------------+-------------+-----------------+------------+----------+ | 1 | 2014-09-05 | 1 | Some old text | 2014-08-01 | Sam | | 2 | 2014-09-05 | 1 | Some newer text | 2014-09-01 | Jordan | | 3 | 2014-09-06 | 1 | another day | 2014-09-03 | Jordan | | 4 | 2014-09-05 | 1 | Most recent | 2014-09-10 | Jordan | | 5 | 2014-09-07 | 2 | Other resource | 2014-09-09 | Sam | +----+------------+-------------+-----------------+------------+----------+
我试图只返回指定日期范围内的唯一记录,其中应该返回的唯一记录是那些在 added_on
列中具有最高日期时间戳的记录。
在上面的示例中,我只想返回记录 3、4、5。记录 1 和 2 已被记录 4 取代。
**请注意:added_on
列的类型为日期时间戳 (yyyy-mm-dd HH:mm:ss),为清楚起见,已将其删除 **
我不知道查询会返回多少行,决定记录唯一性的信息是eventdate, resource_id and added_on
即每天每个资源应该只返回一条记录,并且这条记录应该具有最高的 added_on 值
最佳答案
SELECT s1.* FROM schedule s1
inner join (select max(id) as id1 from schedule WHERE eventdate BETWEEN '2014-09-01' AND '2014-09-07' group by eventdate,resource_id ) as s2 on s2.id1=s1.id
它会为你工作
关于mysql - SQL 查询返回查询中的最高日期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25758233/