Für dieses Beispiel liegt Ihr Problem definitiv in der Unterabfrage USING. Diese Abfrage erzeugt mehr als einen Wert von table2.column1
:
SELECT DISTINCT table2.column1,
view1.column2
FROM SCHEMA2.TABLE_2 table2
LEFT JOIN SCHEMA2.VIEW_1 view1
ON table2.column2 = view1.column3
Die ON-Klausel stimmt also mit denselben Zeilen in table1
überein mehr als einmal:
ON (table1.column3 = t2.column1 )
Oracle kann nicht herausfinden, welcher Wert von t2.column2
ist sollte im UPDATE verwendet werden, also schleudert es ORA-30926
.
Die Verwendung von „distinct“ in der Unterabfrage hilft nicht, da dies Permutationen aller Spalten ergibt. Sie müssen eine Unterabfrage schreiben, die eindeutige Werte von t2.column1
erzeugt über alle Zeilen oder fügen Sie weitere identifizierende Spalte(n) hinzu, um einen eindeutigen Schlüssel zu generieren, den Sie mit table1
verknüpfen können .