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

Actualización de fila con subconsulta que devuelve varias filas

En Oracle, puede incluir consultas que devuelvan solo una fila (subconsultas escalares) entre paréntesis y usarlas como usaría variables/columnas:

UPDATE Table1 t1
SET D = (SELECT t2.D + t3.D 
         FROM Table2 t2
             ,Table3 t3
         WHERE t1.P = t2.P 
           AND t1.A = t3.A);

Si la subconsulta devuelve más de una fila, probablemente desee usar SUM() en la subconsulta. Editar:si no une las tablas en la subconsulta, probablemente debería usar dos subconsultas en su lugar.

UPDATE Table1 t1
SET D = (SELECT sum(t2.D) 
         FROM Table2 t2
         WHERE t1.P = t2.P)
        +
        (SELECT sum(t3.D)
         FROM Table3 t3
         WHEREt1.A = t3.A)