Oracle SQL 更新交换号码

Oracle SQL update swap numbers

我有一个 table Oracle SQL 开发人员,某些代码中某处存在错误,创建记录时翻转了两个值。所以,我需要的是翻转所有 5 和 6 的东西。

ID  Name  Type
0   Joe   5
1   Chris 6
2   Jane  5
3   Tyler 6

需要

ID  Name  Type
0   Joe   6
1   Chris 5
2   Jane  6
3   Tyler 5
update table set Type = 11 - Type
where Type in (5,6)

我最终做到了,感谢您的帮助

update person
set type = (decode(type, 5, 6, 6, 5))
where id in
(select id
from (select *
from persons
natural join permit_persons
natural join permits
where permit_type = 1
and type in (5, 6)));

这是更通用的方法。我真的很喜欢像 Type = 11 - Type 这样的技巧,但遗憾的是,我们工作的世界中,如果这不仅仅是一次性更新,我们的很多同事都不会理解这一点。

update table
set Type = case when Type = 5 then 6 when 6 then 5 end
where Type in (5,6)