W tym przykładzie Twój problem jest zdecydowanie w podzapytaniu USING. To zapytanie generuje więcej niż jedną wartość table2.column1
:
SELECT DISTINCT table2.column1,
view1.column2
FROM SCHEMA2.TABLE_2 table2
LEFT JOIN SCHEMA2.VIEW_1 view1
ON table2.column2 = view1.column3
Tak więc klauzula ON będzie pasować do tych samych wierszy w table1
więcej niż raz:
ON (table1.column3 = t2.column1 )
Oracle nie może ustalić, która wartość t2.column2
powinien być używany w UPDATE, więc rzuca ORA-30926
.
Użycie w podzapytaniu odrębnego nie pomaga, ponieważ daje to permutacje wszystkich kolumn. Musisz napisać podzapytanie, które wygeneruje unikalne wartości t2.column1
we wszystkich wierszach lub dodaj kolejne kolumny identyfikujące, aby wygenerować unikalny klucz, który możesz dołączyć do table1
.