2014-07-16 3 views
0

Dans Oracle, en essayant de mettre à jour une colonne dans la même table - comme si la colonne a une valeur 636180 puis avec 3 comme ci-dessousOracle - mettre à jour la colonne de la même table

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

erreurs dehors comme

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

Aidez-nous s'il vous plaît.

Répondre

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

ou à ne mettre à jour les enregistrements ayant la 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

Pour éviter les mises à jour pertinentes inutiles sur les enregistrements qui ne changent pas, je le laisse de côté « autre wid » et ajouter une condition where pour les deux valeurs qui devraient changer – Hambone

Questions connexes