A menos que seu
SELECT
subconsulta retorna uma única linha, seu UPDATE
instrução deve falhar com o erro ORA-01427: single-row subquery returns more than one row
Geralmente, quando você tem uma atualização correlacionada, você precisa de alguma condição que relacione as linhas na tabela externa
T1
para linhas na subconsulta interna para garantir que a subconsulta retorne uma única linha. Isso geralmente seria algo 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, este
UPDATE
instrução está atualizando cada linha em T1
. É isso que você pretende? Ou você deseja atualizar apenas as linhas onde, por exemplo, você encontra uma correspondência em sua subconsulta?