2014-07-16 4 views
0

В оракула, пытаясь обновить колонку в одной таблице - например, если столбец имеет значение 636180, то с 3, как показано нижеOracle - обновление колонки в одной таблице

update TABLE_A 
set wid = (
select distinct case wid 
when 636180 then 3 
when 636181 then 5 
else wid 
end new_wid 
from TABLE_A where rownum < 100); 

It ошибок, как

SQL Error: ORA-01427: single-row subquery returns more than one row 
01427. 00000 - "single-row subquery returns more than one row" 

Пожалуйста, помогите.

ответ

1
update TABLE_A 
set wid = case when wid = 636180 then 3 
       when wid = 636181 then 5 
       else wid 
      end 
where rownum < 100 

или обновлять только записи, имеющие соответствующие wid s

update TABLE_A 
set wid = case when wid = 636180 then 3 
       when wid = 636181 then 5 
      end 
where wid in (636180, 636181) 
+0

Чтобы избежать ненужных обновлений по записям, которые не меняются, я бы опустить «еще WID» и добавить где условие для двух значений, которые должны измениться – Hambone

Смежные вопросы