我正在尝试通过使用以下查询更新我的表数据(1 => 3 = 2 => 1,3 => 2)。
/* Temporarily set 1 to a dummy unused value of 11
so they are disambiguated from those set to 1 in the next step */
update <tablename>
set id = 11
where id = 1
update <tablename>
set id = 1
where id = 2
update <tablename>
set id = 2
where id = 3
update <tablename>
set id = 3
where id = 11
想知道我是否可以优化我的脚本。
答案 0 :(得分:5)
您可以使用case
。从概念上讲,操作一下子就会发生#34;因此,不需要像顺序方法那样使用第四个虚拟值。
UPDATE YourTable
SET ID = CASE ID WHEN 1 THEN 3
WHEN 2 THEN 1
WHEN 3 THEN 2
END
WHERE ID IN (1,2,3)
虽然改变id是不寻常的,因为它们通常应该是不可变的。