Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Atualização correlacionada do Oracle SQL


Se houver uma relação um-para-muitos entre t1 e t2 ou entre t2 e t3, você obterá muitas correspondências para cada linha em t1. Se você sabe que todas as linhas em t3 que pertencem à mesma linha em t1 têm o mesmo valor em d, então você pode usar DISTINCT para remover duplicatas (idênticas).
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);