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

在Microsoft SQL Server中从多表获取每行最新更新日期

解决每行数据获取最新更新日期的问题

你的原查询用了TOP 1,所以只返回了所有记录里更新日期最新的那一行,而不是每个ID对应的最新更新日期。下面提供几种针对性的解决方案:

方法一:使用GREATEST函数(SQL Server 2022+适用)

直接比较两个表的更新日期字段,取最大值,语法最简洁:

SELECT 
    A.ID,
    GREATEST(A.T_LAST_WRITE, B.T_LAST_WRITE) AS LatestUpdateDate
FROM dbo.A
JOIN dbo.B ON A.ID = B.ID_

方法二:使用CASE语句(兼容所有SQL Server版本)

如果你的SQL Server版本不支持GREATEST,可以用CASE判断哪个日期更大:

SELECT 
    A.ID,
    CASE 
        WHEN A.T_LAST_WRITE >= B.T_LAST_WRITE THEN A.T_LAST_WRITE
        ELSE B.T_LAST_WRITE
    END AS LatestUpdateDate
FROM dbo.A
JOIN dbo.B ON A.ID = B.ID_

方法三:基于UNPIVOT扩展(适合多日期字段场景)

如果后续需要添加更多表的更新日期字段,用这种方式不用大幅修改逻辑,通过窗口函数按ID分组取每组最新日期:

SELECT ID, Val AS LatestUpdateDate
FROM (
    SELECT  
        dt.ID,
        dates.Val,
        ROW_NUMBER() OVER (PARTITION BY dt.ID ORDER BY dates.Val DESC) AS rn
    FROM (
        SELECT A.ID, B.T_LAST_WRITE BDT, A.T_LAST_WRITE ADT
        FROM dbo.A
        JOIN dbo.B ON A.ID = B.ID_
    ) dt 
    UNPIVOT (
        Val FOR L IN (ADT, BDT)
    ) AS dates
) ranked
WHERE rn = 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:05:12