我需要从2866开始将列中的每个字段增加1。我已经构建了以下查询,但它所做的只是将每个字段设置为2867而不是2868,2869等......
DECLARE @a int
SET @a = 2866
UPDATE view_kantech_matched SET image_id = @a + 1
WHERE image_id = null
有什么建议吗?感谢
答案 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