Sauf si votre SELECT
la sous-requête renvoie une seule ligne, votre UPDATE
l'instruction doit échouer avec l'erreur
ORA-01427: single-row subquery returns more than one row
Généralement, si vous avez une mise à jour corrélée, vous avez besoin d'une condition qui relie les lignes de la table externe T1
aux lignes de la sous-requête interne afin de garantir que la sous-requête renvoie une seule ligne. Cela ressemblerait généralement à quelque chose comme
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);
Enfin, cette UPDATE
l'instruction met à jour chaque ligne dans T1
. C'est ce que vous avez l'intention ? Ou souhaitez-vous uniquement mettre à jour les lignes où, par exemple, vous trouvez une correspondance dans votre sous-requête ?