将列的值增加一

3

我正在尝试更新一个列(int),但它不像我想要的那样每次增加1,而是每8行增加一次。所以它会这样做:

Table1

ID  FIELD_NUMBER
----------------
1    3507572
2    3507572
3    3507572
4    3507572
5    3507572
6    3507572
7    3507572
8    3507572
9    3507573
10   3507573
11   3507573
12   3507573
13   3507573
14   3507573
15   3507573
16   3507573

它应该递增1,即3507572、3507573等。

代码:

DECLARE @id INT 
SET @id = 3507571 

UPDATE table1
SET @id = FIELD_NUMBER = @id + 1 
GO

不确定原因。我正在使用SQL Server 2012。有什么想法吗?


1
这不是一种保证的方法。可能您正在获取一个DOP为8的并行计划。 - Martin Smith
DOP 是什么意思? - Peter Sun
并行度。您应该使用row_number代替。 - Martin Smith
1个回答

3
更好的方法是使用可更新的CTE:
DECLARE @id INT;
SET @id = 3507571;

with toupdate as (
      select t1.*, row_number() over (order by field_number) as seqnum
      from table1 t1
     )
update toupdate
    set field_number = @id + seqnum;

在脚本之前应该像正常声明 '@id' 吗? - Peter Sun
我想应该是按照id排序。 - Martin Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接