首页 > 解决方案 > 检索按列分组的最后 2 条记录

问题描述

我有一个 mysql 查询,可以使用以下查询为每个分组选择最近的记录

SELECT *
FROM tbl_prices
WHERE id IN (
    SELECT MAX(id)
    FROM tbl_prices
    GROUP BY instrument
);

但现在我需要为每个分组列获取最近的 2 条记录。原因是我需要比较最新 2 条记录之间的差异以对结果执行附加功能。

我应该创建 2 个查询来获得结果吗?如果是,我将如何获得最新的 - 1

我看过这个 SO 帖子(检索每个组中的最后一条记录 - MySQL),但它似乎不符合我的要求,因为它仍然只是每个组的最新记录。

标签: mysql

解决方案


您尝试使用 row_number()。

select * from (
select * , row_number() over(partition by instrument order by id desc) as row_num from from tbl_prices
) p where p.row_num <= 2

推荐阅读