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

Actualizar con consulta de unión en Oracle

A menos que su SELECT la subconsulta devuelve una sola fila, su UPDATE la declaración debería fallar con el error

ORA-01427: single-row subquery returns more than one row

Generalmente, cuando tiene una actualización correlacionada, necesita alguna condición que relacione filas en la tabla exterior T1 a filas en la subconsulta interna para garantizar que la subconsulta devuelva una sola fila. Eso generalmente se vería algo así como

UPDATE table1 t1 SET (t1.col,t1.Output) = (
  SELECT t2.col, t3.Output + t2.col
  FROM tabl2 t3 
  LEFT JOIN table1 t2 ON t3.Join_Key = t2.Join_Key
  WHERE t2.col is not NULL
    AND t1.some_key = t2.some_key);

Finalmente, esta UPDATE declaración está actualizando cada fila en T1 . ¿Es eso lo que pretendes? ¿O solo desea actualizar las filas donde, por ejemplo, encuentra una coincidencia en su subconsulta?