在Sql Server中交换ID

Her*_*art 3 sql-server swap key foreign-keys

我看了一下这个问题:sql swap主键值

所以我得到了以下脚本:

UPDATE t, t as t2
SET t.id = t2.id, t2.id = t.id
WHERE t.id = 1 AND t2.id = 2
Run Code Online (Sandbox Code Playgroud)

但我无法将其转换为有效的SQL Server语法.

请帮我 :)

提前致谢!

Luk*_*der 5

关于什么

UPDATE t SET t.id = (CASE t.id WHEN 1 THEN 2 ELSE 1 END)
WHERE t.id IN (1, 2)
Run Code Online (Sandbox Code Playgroud)


Guf*_*ffa 5

看起来您正在尝试将表连接到自身,以便您可以一次更新两个记录.我不确定是否可能,但肯定不需要.

只需找到两个记录,然后通过从两个id的总和中减去它来计算另一个id:

update t
set id = (1 + 2) - id
where id = 1 or id = 2
Run Code Online (Sandbox Code Playgroud)

(注意:这要求密钥是数字.虽然这是最常见的情况,但某些非数字类型也可以用作密钥.)