0
我有一個名爲腳本的現有表,它具有許多腳本,它們具有唯一腳本ID和非唯一腳本名稱。並且有許多記錄這張桌子。 現在作爲我目前的開發的一部分,我已經使腳本名稱是唯一的。當某個主體通過UI上載腳本時,該表格被填充。現在對於已經存在的腳本,腳本名稱列中沒有對值的重複的限制。它有很多重複記錄。 現在我想給所有現有的腳本名稱,通過添加一些後綴給一個獨特的名稱。我該怎麼做?SQL更新查詢來更新現有表中的列以具有唯一值具有重複值
我有一個名爲腳本的現有表,它具有許多腳本,它們具有唯一腳本ID和非唯一腳本名稱。並且有許多記錄這張桌子。 現在作爲我目前的開發的一部分,我已經使腳本名稱是唯一的。當某個主體通過UI上載腳本時,該表格被填充。現在對於已經存在的腳本,腳本名稱列中沒有對值的重複的限制。它有很多重複記錄。 現在我想給所有現有的腳本名稱,通過添加一些後綴給一個獨特的名稱。我該怎麼做?SQL更新查詢來更新現有表中的列以具有唯一值具有重複值
喜歡的東西:
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
非常感謝您的回答。 – user1595214