SQL Server:分配顺序号不起作用

时间:2016-09-27 21:47:04

标签: sql-server

我正在尝试执行以下代码,以便向表中添加序号。

declare @myvar2 int
set @myvar2 = 1

update _TEST_DATA
set ID = @myvar2, @myvar2 = @myvar2 + 1;

当我运行它时,我获得了分配给表中多行的相同ID。有什么建议?

我在SQL Server 2012上

2 个答案:

答案 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;