Если ваш подзапрос 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
. Это то, что вы намерены? Или вы хотите обновить только те строки, где, например, вы нашли совпадение в своем подзапросе?