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
会产生额外的开销。
我有一个 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
会产生额外的开销。