You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL查询中获取特定筛选条件下的最后一条匹配记录

解决方案

方法1:使用MAX聚合函数(最通用,仅需获取最新日期时优先使用)

所有主流SQL数据库均支持该写法,直接返回符合筛选条件的最大(即最新)日期值:

SELECT MAX(date) FROM msr_history WHERE pos = 'DV' AND msr_id = 177;

方法2:排序+结果限制(需要获取最新日期对应的整条记录时使用)

从你的示例提示符pigc=#判断你使用的是PostgreSQL数据库,可通过按日期倒序排序后取第一条的方式实现,如果你后续需要同时查询该条记录的其他字段,直接修改SELECT后的字段列表即可:

SELECT date FROM msr_history WHERE pos = 'DV' AND msr_id = 177 ORDER BY date DESC LIMIT 1;

如果你使用的是MySQL,写法和上面完全一致;如果是SQL Server,将LIMIT 1替换为TOP 1放在SELECT后即可;如果是Oracle,可在末尾添加AND ROWNUM = 1实现。

方法3:窗口函数(多分组批量查询各组最新记录时使用)

如果你需要同时查询多个pos、msr_id对应的各自最新记录,使用窗口函数的方案更高效:

SELECT date, pos, msr_id 
FROM (
    SELECT 
        date, 
        pos, 
        msr_id,
        ROW_NUMBER() OVER (PARTITION BY pos, msr_id ORDER BY date DESC) AS rn
    FROM msr_history
) t
WHERE rn = 1 
-- 可根据需求调整筛选条件,不加pos和msr_id筛选则返回所有分组的最新记录
AND pos = 'DV' 
AND msr_id = 177;

内容的提问来源于stack exchange,提问作者matthew fabrie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:09:03