Oracle
 sql >> Database >  >> RDS >> Oracle

Aggiornamento correlato a Oracle SQL

Se esiste una relazione uno-a-molti tra t1 e t2 o tra t2 e t3, otterrai molte corrispondenze per ogni riga in t1. Se sai che tutte le righe in t3 che appartengono alla stessa riga in t1 hanno lo stesso valore in d, puoi usare DISTINCT per rimuovere i duplicati (identici).

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