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

SQL查询:如何获取Id对应下version、Date均最新的数据行?

获取每个Id下Version最新且Date最新的行

下面提供几种实用的SQL实现方式,适配不同数据库场景:

方法1:窗口函数(推荐)

如果你的数据库支持窗口函数(比如MySQL 8.0+、PostgreSQL、SQL Server等),用ROW_NUMBER()是最直观的方案。按Id分组后,先按version倒序排(最新版本在前),同版本下再按Date倒序排,最后取每组的第一行即可:

SELECT Id, Name, version, Date
FROM (
    SELECT *,
           ROW_NUMBER() OVER (PARTITION BY Id ORDER BY version DESC, Date DESC) AS row_num
    FROM your_table
) AS ranked_table
WHERE row_num = 1;

方法2:子查询关联

通过子查询先找出每个Id对应的最大version,再在该version范围内找出最大Date,最后关联原表拿到完整数据:

SELECT t1.*
FROM your_table t1
INNER JOIN (
    SELECT Id,
           MAX(version) AS latest_version,
           MAX(Date) AS latest_date
    FROM your_table
    GROUP BY Id, version
    HAVING version = (SELECT MAX(version) FROM your_table t2 WHERE t2.Id = your_table.Id)
) t2 ON t1.Id = t2.Id 
    AND t1.version = t2.latest_version 
    AND t1.Date = t2.latest_date;

方法3:NOT EXISTS 条件判断

用NOT EXISTS直接判断:当前行是同一Id下,没有比它version更新,或者version相同但Date更新的行,那它就是我们要的目标行:

SELECT t1.*
FROM your_table t1
WHERE NOT EXISTS (
    SELECT 1
    FROM your_table t2
    WHERE t2.Id = t1.Id
    AND (t2.version > t1.version 
         OR (t2.version = t1.version AND t2.Date > t1.Date))
);

内容的提问来源于stack exchange,提问作者Yash Depani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:42:11