Sql server 如何使用更新查询增加列值

Sql server 如何使用更新查询增加列值,sql-server,Sql Server,我在下面的查询中尝试用表ELEM_DUP3中的唯一值更新ID,但所有ID都用相同的值更新 UPDATE DW.ELEM_DUP3 FROM ( SELECT MAX(ID) AS ID FROM DW.ELEM ) S SET ID = (S.ID + 1) 表中的数据:更新后: ID名称ID名称 5测试8 8测试8 6测试9 8测试9 7测试10 8测试10 预期结果: ID Name 8 test8 9 test9 10 test10 谁能帮我一下我哪里错了 UPDATE

我在下面的查询中尝试用表ELEM_DUP3中的唯一值更新ID,但所有ID都用相同的值更新

UPDATE DW.ELEM_DUP3
 FROM ( SELECT MAX(ID) AS ID
    FROM DW.ELEM ) S
 SET ID = (S.ID + 1)
表中的数据:更新后: ID名称ID名称 5测试8 8测试8 6测试9 8测试9 7测试10 8测试10 预期结果:

ID Name
8 test8
9 test9
10 test10
谁能帮我一下我哪里错了

 UPDATE DW.ELEM_DUP3 D
 FROM ( SELECT ID AS ID
 FROM DW.ELEM Where ID=D.ID) S
 SET D.ID = (S.ID + 1)

它应该适合您

根据要求,这符合您的要求:

UPDATE DW.ELEM_DUP3
SET ID = ID + (SELECT MAX(ID)-MIN(ID)+1 FROM DW.ELEM_DUP3)

您可以重复运行它,它将不断增加字段

请标记您正在使用的dbms,如SQLserver或oracle。这是因为您使用此选项:选择MAX(ID),它将始终为您提供8,因为数据表中的MAX(ID)是7。没有WHERE子句,因此,所有行都将使用相同的值进行更新。在查询中添加where子句以获取当前行的id,然后更新您在外部查询中引用的id为Select MAX(id)。它将返回一个常量值(在您的情况下为8)。这就是为什么你会有问题。