Sql server 如何使用更新查询增加列值
我在下面的查询中尝试用表ELEM_DUP3中的唯一值更新ID,但所有ID都用相同的值更新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
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)。这就是为什么你会有问题。