假设我有一个包含以下列的数据库:
VehicleID|timestamp|lat|lon|
我可能有多次相同的VehicleId但具有不同的时间戳。因此,VehicleId,Timestamp是主键。
现在我想得到每辆VehicleId的最后N次测量值或每辆车的前N次测量值。
我如何根据每个VehicleId的排序列(例如我们的案例时间戳)列出最后N个元组?
示例:
|VehicleId|Timestamp|
1|1
1|2
1|3
2|1
2|2
2|3
5|5
5|6
5|7
答案 0 :(得分:4)
在MySQL中,使用变量最容易做到这一点:
select t.*
from (select t.*,
(@rn := if(@v = vehicle, @rn + 1,
if(@v := vehicle, 1, 1)
)
) as rn
from table t cross join
(select @v := -1, @rn := 0) params
order by VehicleId, timestamp desc
) t
where rn <= 3;