SELECT
でない限り サブクエリは単一の行、つまりUPDATE
を返します ステートメントはエラーで失敗するはずです
ORA-01427: single-row subquery returns more than one row
一般に、相関更新がある場合は、外部テーブルT1
の行を関連付ける条件が必要です。 サブクエリが単一の行を返すことを保証するために、内部サブクエリの行に。それは一般的に次のようになります
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);
最後に、このUPDATE
ステートメントはT1
のすべての行を更新しています 。それはあなたが意図していることですか?または、たとえば、サブクエリで一致する行を見つけた行のみを更新しますか?