【发布时间】:2014-11-03 16:16:36
【问题描述】:
我正在尝试运行查询以执行以下操作:
返回给定日期范围内表中的所有最新条目。
目前我正在使用这个查询
SELECT id FROM schedule WHERE eventdate BETWEEN '2014-09-01' AND '2014-09-07'
从下面显示的计划表中返回记录 1,2,3,4,5
时间表。
+----+------------+-------------+------ +------------+----------+ |编号 |活动日期 |资源 ID |正文 |已添加 |添加人 | +----+------------+-------------+------ +------------+----------+ | 1 | 2014-09-05 | 1 |一些旧文| 2014-08-01 |山姆 | | 2 | 2014-09-05 | 1 |一些较新的文字 | 2014-09-01 |约旦 | | 3 | 2014-09-06 | 1 |改天| 2014-09-03 |约旦 | | 4 | 2014-09-05 | 1 |最近 | 2014-09-10 |约旦 | | 5 | 2014-09-07 | 2 |其他资源 | 2014-09-09 |山姆 | +----+------------+-------------+------ +------------+----------+我试图只返回指定日期范围内的唯一记录,其中应该返回的唯一记录是那些在added_on 列中具有最高日期时间戳的记录。
在上面的示例中,我只想返回记录 3、4、5。记录 1 和 2 已被记录 4 取代。
**请注意:added_on 列的类型为日期时间戳 (yyyy-mm-dd HH:mm:ss),为清楚起见已省略**
不知道查询会返回多少行,决定记录唯一性的信息是eventdate, resource_id and added_on
即每个资源每天应该只返回一条记录,并且这条记录应该具有最高的附加值
【问题讨论】:
-
什么决定第 1,2 行被第 3 行取代?
-
有一列始终保持不变(EventID)?
-
为什么返回 id 3?它也应该被取代,对吧?
标签: mysql sql greatest-n-per-group