Om inte din SELECT
subquery returnerar en enda rad, din UPDATE
uttalandet bör misslyckas med felet
ORA-01427: single-row subquery returns more than one row
I allmänhet, vassle du har en korrelerad uppdatering, behöver du något villkor som relaterar rader i den yttre tabellen T1
till rader i den inre underfrågan för att säkerställa att underfrågan returnerar en enda rad. Det skulle i allmänhet se ut ungefär som
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);
Slutligen, denna UPDATE
uttalandet uppdaterar varje rad i T1
. Är det vad du tänker? Eller vill du bara uppdatera de rader där du till exempel hittar en matchning i din underfråga?