【问题标题】:Oracle SQL update swap numbersOracle SQL 更新交换号
【发布时间】:2023-03-09 10:11:01
【问题描述】:
我有一个 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
【问题讨论】:
标签:
sql
oracle
sql-update
oracle-sqldeveloper
【解决方案1】:
update table set Type = 11 - Type
where Type in (5,6)
【解决方案2】:
我终于做到了,谢谢你的帮助
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)));
【解决方案3】:
这是更通用的方法。我真的很喜欢 Type = 11 - Type 这样的技巧,但遗憾的是,我们工作的世界里,如果不是一次性更新,我们的很多同事都不会理解这一点。
update table
set Type = case when Type = 5 then 6 when 6 then 5 end
where Type in (5,6)