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

SQL需求:按部门取唯一ID对应最大日期,按RevNo取最新创建记录

解决方案:获取每个RevNo的最新记录

没问题,针对你要查询每个RevNo对应最新Created日期完整记录的需求,我给你两种常用的SQL实现方法,你可以根据自己使用的数据库版本和实际场景选择:

方法一:使用窗口函数(推荐,现代SQL写法)

窗口函数是处理这类分组取Top N场景的最优方案之一,逻辑清晰且效率不错。这里用ROW_NUMBER()来给每个RevNo分组的记录按创建日期倒序编号,取编号为1的那条就是最新记录:

WITH ranked_records AS (
    SELECT 
        RevNo,
        RevContent,
        PIC,
        Created,
        -- 按RevNo分组,每组内按Created降序排序,生成序号
        ROW_NUMBER() OVER (PARTITION BY RevNo ORDER BY Created DESC) AS rn
    FROM your_table_name -- 替换成你的实际表名
)
SELECT RevNo, RevContent, PIC, Created
FROM ranked_records
WHERE rn = 1;

注意:如果同一个RevNo存在多条相同最大Created日期的记录,ROW_NUMBER()会随机选一条;如果需要返回所有这些同日期的记录,可以把ROW_NUMBER()换成RANK()或者DENSE_RANK()。

方法二:使用子查询关联(兼容老版本数据库)

如果你的数据库不支持窗口函数(比如一些旧版MySQL),可以用子查询先拿到每个RevNo的最大创建日期,再关联原表获取完整记录:

SELECT t1.*
FROM your_table_name t1 -- 替换成你的实际表名
INNER JOIN (
    -- 先得到每个RevNo对应的最新日期
    SELECT RevNo, MAX(Created) AS max_created
    FROM your_table_name
    GROUP BY RevNo
) t2 ON t1.RevNo = t2.RevNo AND t1.Created = t2.max_created;

这个方法的特点是兼容性好,但如果同一个RevNo有多个相同的最大Created日期,会返回所有符合条件的记录,这点和方法一的RANK()效果一致。


内容的提问来源于stack exchange,提问作者N.I.A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:14:38