2015-07-02 1 views
0

У меня есть таблица Oracle SQL Developer, была ошибка где-то в некотором коде, и два значения были перевернуты, когда записи были созданы. Итак, мне нужно что-то перевернуть все 5 и 6.Oracle swap numbers

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

Это более общий подход. Мне очень нравятся трюки, такие как Type = 11 - Type, но, к сожалению, мы работаем в мире, где многие наши коллеги не понимают, что если это не просто одноразовое обновление.

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