Oracle
 sql >> Base de données >  >> RDS >> Oracle

Mise à jour corrélée Oracle SQL

S'il existe une relation un-à-plusieurs entre t1 et t2 ou entre t2 et t3, vous obtiendrez de nombreuses correspondances pour chaque ligne de t1. Si vous savez que toutes les lignes de t3 qui appartiennent à la même ligne de t1 ont la même valeur dans d, alors vous pouvez utiliser DISTINCT pour supprimer les doublons (identiques).

UPDATE table1 t1
   SET t1.c = (select DISTINCT t3.d
               from table2 t2, table3 t3
               where t2.b = t3.b and t1.a = t2.a)                                  
 WHERE EXISTS ( SELECT 1 FROM table2 t2, table3 t3 WHERE t1.c = t3.c and t1.a = t2.a);