Es sei denn, Ihr SELECT
Unterabfrage gibt eine einzelne Zeile zurück, Ihr UPDATE
-Anweisung sollte mit dem Fehler
ORA-01427: single-row subquery returns more than one row
Im Allgemeinen benötigen Sie bei einem korrelierten Update eine Bedingung, die Zeilen in der äußeren Tabelle T1
verknüpft Zeilen in der inneren Unterabfrage, um sicherzustellen, dass die Unterabfrage eine einzelne Zeile zurückgibt. Das würde im Allgemeinen ungefähr so aussehen
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);
Zum Schluss noch dieses UPDATE
-Anweisung aktualisiert jede Zeile in T1
. Ist es das, was Sie beabsichtigen? Oder möchten Sie nur die Zeilen aktualisieren, in denen Sie beispielsweise eine Übereinstimmung in Ihrer Unterabfrage finden?