2013-08-21 3 views
2

В таблице есть data.like это одноимя своп в той же колонке в той же оракула

ID  NAME 
1 Apple 
2 Apple 
3 Apple 
4 orange 
5 orange 
6 orange 
7 Apple 
8 Apple 
9 Apple 
10 orange 
11 orange 
12 orange 

данные могут быть более чем в 1000 раз. теперь необходимо поменять/изменить/обновить яблоко до оранжевого и оранжевого до яблока.

+0

Почему вы отметите это с MySQL ** и * * Oracle? –

ответ

0
update YourTable 
set  name = 
     case name 
     when 'Apple' then 'Orange' 
     when 'Orange' then 'Apple' 
     end 
where name in ('Apple', 'Orange') 
7

Вы бы сделать это с case в update заявлении:

update t 
    set name = (case when name = 'Apple' then 'Orange' 
        when name = 'Orange' then 'Apple' 
       end) 
    where name in ('Apple', 'Orange'); 

Это стандарт SQL и будет работать как в MySQL и Oracle.

Если вам не нужно на самом деле изменить имя, а просто поменять его в select, затем сделать логику в запросе:

select (case when name = 'Apple' then 'Orange' 
      when name = 'Orange' then 'Apple' 
      else name 
     end) as name 
from t; 
Смежные вопросы