Update mit Join-Abfrage in Oracle
Ein Oracle-Benutzer hat eine endlose Ausführungszeit für die folgende Abfrage festgestellt:
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);
Sofern die SELECT-Unterabfrage kein einzeiliges Ergebnis garantiert, schlägt die UPDATE-Anweisung mit dem fehl Fehler:
ORA-01427: single-row subquery returns more than one row
Korrelierte Aktualisierungen erfordern eine Bedingung, die Zeilen in der äußeren Tabelle (in diesem Fall Tabelle1) und der inneren Unterabfrage verknüpft. Normalerweise tritt diese Bedingung auf:
AND t1.some_key = t2.some_key);
Zusätzlich aktualisiert die Abfrage jede Zeile in Tabelle1. Wenn der Benutzer bestimmte Zeilen aktualisieren möchte, sollte eine WHERE-Klausel hinzugefügt werden, die basierend auf der Join-Bedingung filtert, wie zum Beispiel:
... WHERE subquery_condition
Das obige ist der detaillierte Inhalt vonWie kann ich ORA-01427 in meiner Oracle UPDATE-Anweisung mit einer JOIN-Unterabfrage beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!