Update mit Join-Abfrage in Oracle
was ist falsch bei der Abfrage? (es wird ausgeführt, auf unbestimmte Zeit)
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);
Bitte helfen Sie mir.
- Was meinst du mit "führt auf unbestimmte Zeit"? Es funktioniert nicht vollständig, nicht analysieren, aktualisiert inkonsistente Zeilen oder was?
- Auch könnten Sie bitte erklären in verständlicher Sprache, was meinst du zu erreichen? Deine Unterabfrage wie es jetzt ist, ist nicht korreliert und die Aktualisierung schlägt fehl, wenn es gibt mehr als eine Zeile.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Abfrage nicht machen eine ganze Menge Sinn, mit dem generischen "Tabelle1", Tabelle2, und join_key Referenzen.
Ist dies nicht das, was du suchst, wäre es hilfreich, wenn Sie einige Beispieldaten, um eine bessere Vorstellung davon bekommen, welche Ergebnisse Sie suchen für.
Sei denn, Ihr
SELECT
Unterabfrage gibt eine einzelne Zeile zurück, IhreUPDATE
- Anweisung sollte mit dem Fehler fehlschlagenAllgemein -, Molke-Sie haben eine korrelierte aktualisieren, benötigen Sie eine Bedingung, die betrifft die Zeilen der äußeren Tabelle
T1
Zeilen in die innere Unterabfrage, um sicherzustellen, dass die Unterabfrage gibt eine einzelne Zeile zurück. Das würde allgemein so AussehenSchließlich
UPDATE
- Anweisung aktualisiert wird jede Zeile inT1
. Ist es das, was Sie beabsichtigen? Oder wollen Sie nur aktualisieren Sie die Zeilen, in denen, zum Beispiel, finden Sie eine übereinstimmung in Ihrer Unterabfrage?