将列中的每个字段增加1 - SQL Server 2008

时间:2015-06-18 14:41:36

标签: sql sql-server tsql

我需要从2866开始将列中的每个字段增加1。我已经构建了以下查询,但它所做的只是将每个字段设置为2867而不是2868,2869等......

DECLARE @a int
SET @a = 2866
UPDATE view_kantech_matched SET image_id = @a + 1
WHERE image_id = null

有什么建议吗?感谢

3 个答案:

答案 0 :(得分:4)

这样做的一般结构是:

;WITH Numbered as (
    SELECT  *,ROW_NUMBER() OVER (ORDER BY <some column>) rn
    FROM view_kantech_matched
    WHERE image_id is NULL
)
UPDATE Numbered SET image_id = 2865 + rn

但我不知道<some column>会是什么。

答案 1 :(得分:3)

DECLARE @a int
SET @a = 2866
UPDATE view_kantech_matched SET image_id = @a, @a=@a + 1
WHERE image_id = null

答案 2 :(得分:2)

如果要将其更新为以2866开头的值,并且每行增加一个,则必须指定要用于排序的列。

然后您可以使用ROW_NUMBER

WITH NoImageIDS AS
(
    SELECT vkm.*, RN = ROW_NUMBER() OVER (ORDER BY AnyColumn ASC)
    FROM dbo.view_kantech_matched vkm
    WHERE image_id IS NULL
)
UPDATE NoImageIDS SET image_id = RN + 2866