Освен ако вашият 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
. Това ли възнамерявате? Или искате да актуализирате само редовете, където например намирате съвпадение във вашата подзаявка?