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

SQL2017按Identification分组取time最大值更新register列方案问询

SQL Server 2017 按分组更新register字段实现方案

直接使用窗口函数标记分组内的目标行即可实现需求,针对数千条数据的场景性能完全满足:

第一步:先查询验证逻辑,避免更新错误

SELECT 
    Identification,
    time,
    register,
    CASE WHEN ROW_NUMBER() OVER (PARTITION BY Identification ORDER BY time DESC) = 1 THEN 1 ELSE 0 END AS new_register
FROM 你的实际表名;

确认查询结果的new_register字段符合预期后,再执行更新操作。

第二步:执行更新

WITH ranked_data AS (
    SELECT 
        register,
        ROW_NUMBER() OVER (PARTITION BY Identification ORDER BY time DESC) AS rn
    FROM 你的实际表名
)
UPDATE ranked_data
SET register = CASE WHEN rn = 1 THEN 1 ELSE 0 END;

边界情况说明

如果同一个Identification分组下存在多条time值相同且为最大值的行,需要把所有这些行的register都设为1,把代码里的ROW_NUMBER()替换为RANK()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:39:03