gpt4 book ai didi

MySQL 查询获取每个组的最后 N 行

转载 作者:行者123 更新时间:2023-11-29 04:39:33 25 4
gpt4 key购买 nike

假设我有一个包含以下列的数据库:

VehicleID|timestamp|lat|lon|

我可能有多次相同的 VehicleId 但时间戳不同。因此 VehicleId,Timestamp 是主键。

现在我想得到每个 VehicleId 的最后 N 个测量结果或每个 vehicleId 的前 N ​​个测量结果。

我如何能够根据每个 VehicleId 的排序列(例如,在我们的例子中是时间戳)列出最后 N 个元组?

例子:

|VehicleId|Timestamp|
1|1
1|2
1|3
2|1
2|2
2|3
5|5
5|6
5|7

最佳答案

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

关于MySQL 查询获取每个组的最后 N 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32716152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com