SQL 服务器中的序列号

Sequence Numbering in SQL Server

我有一个 table(总是按 ID 升序排列)有 5 条记录:

ID  Sequence
1   1
2   2
3   3
4   4
8   3
9   3

所需的输出是:

ID  Sequence
1   1
2   2
3   3
4   6
8   4
9   5

对我来说似乎有 3 个直接更新,没有必要让它复杂化:

UPDATE table SET sequence = 6 WHERE id = 4 
UPDATE table SET sequence = 4 WHERE id = 8
UPDATE table SET sequence = 5 WHERE id = 9

如果您想一步完成:

update t
    set sequence = v.sequence
    from t join
         (values (4, 6), (8, 4), (9, 5)
         ) v(id, sequence)
         on t.id = v.id;

如果您必须执行许多这样的更新,那么单独调用 update 会产生额外的开销。