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

如何在SQL Server中为同InstanceId的重复Name值追加计数并更新

SQL Server 更新重复名称并追加备份编号的实现

需求说明

按InstanceId分组,每组内保留第一个Name值不变,后续重复的Name值追加_Backup_1、_Backup_2这类计数编号,最终更新表数据。

原始表数据

IdInstanceIdName
11DiscoveryInstance
21DiscoveryInstance
32ETLInstance
43DiscoveryInstance
53DiscoveryInstance
62ETLInstance
72ETLInstance

期望更新后的数据

IdInstanceIdName
11DiscoveryInstance
21DiscoveryInstance_Backup_1
32ETLInstance
43DiscoveryInstance
53DiscoveryInstance_Backup_1
62ETLInstance_Backup_1
72ETLInstance_Backup_2

实现语句

使用CTE结合窗口函数ROW_NUMBER()标记每组内的行顺序,再执行更新:

WITH RankedInstances AS (
    SELECT 
        Id,
        Name,
        -- 按InstanceId和Name分组,按Id升序生成行号
        ROW_NUMBER() OVER (PARTITION BY InstanceId, Name ORDER BY Id) AS RowNum
    FROM YourTableName -- 请替换为实际表名
)
UPDATE RankedInstances
SET Name = CONCAT(Name, '_Backup_', RowNum - 1)
WHERE RowNum > 1; -- 仅更新非首行的重复名称

语句说明

  • PARTITION BY InstanceId, Name:将数据按实例ID和名称分组,确保同一实例下相同名称的行被归为一组。
  • ORDER BY Id:按ID升序排序,保证每组内的第一行是ID最小的记录(即保留原始名称的行)。
  • RowNum > 1:筛选出每组中除首行外的重复记录,通过CONCAT拼接备份编号,实现名称的更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:06:25