我有一个名为 Script 的现有表,其中存在许多具有唯一脚本 ID 和非唯一脚本名称的脚本。并且该表中有许多记录。现在作为我当前开发的一部分,我已经使脚本名称是唯一的。当某些主体通过 UI 上传脚本时,此表会被填充。现在对于已经存在的脚本,脚本名称列中的值重复没有限制。所以它存在许多重复记录。现在我想通过添加一些后缀来给所有现有的脚本名称,一个唯一的名称。我该怎么做?
问问题
224 次
1 回答
0
就像是:
declare @T table (script_id int not null IDENTITY(1,1) primary key,
script_name varchar(30) not null)
insert into @T (script_name) values
('a'),('b'),('c'),('d'),('b'),('a'),('e'),('c'),('b');
;with Ordered as (
select *,
ROW_NUMBER() OVER (PARTITION BY script_name ORDER by script_id) as rn
from @T
)
update Ordered set script_name = script_name +
CASE WHEN rn > 1 THEN '_' + CONVERT(varchar(10),rn) ELSE '' END
select * from @T
结果:
script_id script_name
----------- ------------------------------
1 a
2 b
3 c
4 d
5 b_2
6 a_2
7 e
8 c_2
9 b_3
于 2013-01-16T10:36:49.303 回答