我正在尝试执行以下代码,以便向表中添加序号。
declare @myvar2 int
set @myvar2 = 1
update _TEST_DATA
set ID = @myvar2, @myvar2 = @myvar2 + 1;
当我运行它时,我获得了分配给表中多行的相同ID。有什么建议?
我在SQL Server 2012上
答案 0 :(得分:0)
您的增量需要在自己的set
语句中完成,而不是在" set" update
陈述的条款。
试试这个:
update _TEST_DATA set ID = @myvar2
-- update is done, now increment
set @myvar2 = @myvar2 + 1
答案 1 :(得分:0)
您可以使用行号生成一个递增1的序列:
DECLARE @myvar2 INT;
SET @myvar2 = 1;
UPDATE td
SET ID = rn
FROM _TEST_DATA td
INNER JOIN (SELECT ID,
@myvar2 + ROW_NUMBER() OVER (ORDER BY ID) rn
FROM _TEST_DATA
) a ON a.ID = td.ID;