mysql - 检索按列分组的最后 2 条记录
问题描述
我有一个 mysql 查询,可以使用以下查询为每个分组选择最近的记录
SELECT *
FROM tbl_prices
WHERE id IN (
SELECT MAX(id)
FROM tbl_prices
GROUP BY instrument
);
但现在我需要为每个分组列获取最近的 2 条记录。原因是我需要比较最新 2 条记录之间的差异以对结果执行附加功能。
我应该创建 2 个查询来获得结果吗?如果是,我将如何获得最新的 - 1
我看过这个 SO 帖子(检索每个组中的最后一条记录 - 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
推荐阅读
- python - ModuleNotFoundError:没有名为“captcha.image”的模块;“验证码”不是一个包
- typo3 - TYPO3 + Fluid:如何使用 f:translate 作为部分参数?
- c++ - 在 C++ 中实现管道命令
- jmeter - POST 请求为 400,但 GET 工作正常
- javascript - 为什么只有在 React 中刷新页面后才能从 localStorage 获取正确的数据
- php - 如何使用内爆数据获取默认检查值
- python - 没有进入 if 语句中的所有 for 循环
- perl - grep 与“从这个到那个”触发器语义?
- c# - 验证 linq 选择表达式中的方法调用次数
- bluetooth - 即使已配对,BlueZ 仍出现“Pin 或 Key 缺失”