Oracle SQL更新交换号

时间:2015-07-02 14:15:59

标签: sql oracle sql-update oracle-sqldeveloper

我有一个表Oracle SQL Developer,在某些代码中某处出现了错误,并且在创建记录时两个值被翻转。所以,我需要的是翻转所有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

3 个答案:

答案 0 :(得分:3)

update table set Type = 11 - Type
where Type in (5,6)

答案 1 :(得分:0)

我最终这样做了,谢谢你的帮助

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)));

答案 2 :(得分:0)

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

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