Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle SQL-korreliertes Update

Wenn zwischen t1 und t2 oder zwischen t2 und t3 eine 1:n-Beziehung besteht, erhalten Sie viele Übereinstimmungen für jede Zeile in t1. Wenn Sie wissen, dass alle Zeilen in t3, die zur selben Zeile in t1 gehören, denselben Wert in d haben, dann können Sie DISTINCT verwenden um (identische) Duplikate zu entfernen.

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