我想更改seqid
:
使用一个更新声明。
UserID seqid
1 1
1 2
1 3
1 4
答案 0 :(得分:8)
确保在运行任何更新之前进行备份,以防出错。
假设(根据你的问题)你做不想要seqid
4修改:
update MyTable
set seqid = seqid + 1
where seqid between 1 and 3
如果您只想增加seqid
,请执行:
update MyTable
set seqid = seqid + 1
编辑添加: 如果你想在提交之前看到你正在做的事情的结果(做出这种改变时的一个好主意):
begin tran
select seqid, count(*)
from Mytable
where seqid between 1 and 4
update MyTable
set seqid = seqid + 1
where seqid between 1 and 3
select seqid, count(*)
from Mytable
where seqid between 1 and 4
--rollback tran
--commit tran
如果您看到Seqids的数量是正确的并且不要忘记提交;请特别在prod上打开交易!但这对于测试更新或删除是个好主意,当你不肯定会产生什么样的影响时。
如果您有一个复杂的更新,另一种尝试的方法是:
update mt
set seqid = seqid + 1
--select seqid, seqid+1, *
From MyTable mt
where seqid between 1 and 3
通过这种方式,您可以运行选择并提前查看每个值将被更改的内容。
答案 1 :(得分:2)
这是更一般的情况,它不会假设旧值和新值之间的关系:
update foo
set seqid = case seqid
when 1 then 2
when 2 then 3
when 3 then 4
end
where seqid in (2,3,4)