2014-07-16 48 views
0

在Oracle中,試圖更新在同一個表中的列 - 就像如果列具有價值636180然後用3如下甲骨文 - 在同一個表更新列

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

它的錯誤了作爲

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小號

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

爲了避免對記錄不改變,我會省略「其他婦女參與發展」不必要的更新,並添加where條件對於應該改變的兩個值 – Hambone