Medmindre din SELECT
underforespørgsel returnerer en enkelt række, din UPDATE
sætningen skulle mislykkes med fejlen
ORA-01427: single-row subquery returns more than one row
Generelt, hvis du har en korreleret opdatering, har du brug for en betingelse, der relaterer rækker i den ydre tabel T1
til rækker i den indre underforespørgsel for at sikre, at underforespørgslen returnerer en enkelt række. Det ville generelt ligne
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);
Til sidst denne UPDATE
sætningen opdaterer hver række i T1
. Er det det du har tænkt dig? Eller vil du kun opdatere de rækker, hvor du f.eks. finder et match i din underforespørgsel?