sql >> Base de Datos >  >> RDS >> Oracle

Actualización correlacionada de Oracle SQL

Si hay una relación de uno a muchos entre t1 y t2 o entre t2 y t3, obtendrá muchas coincidencias para cada fila en t1. Si sabe que todas las filas en t3 que pertenecen a la misma fila en t1 tienen el mismo valor en d, entonces puede usar DISTINCT para eliminar duplicados (idénticos).

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