Per questo esempio il tuo problema è sicuramente nella sottoquery USING. Questa query produce più di un valore di table2.column1
:
SELECT DISTINCT table2.column1,
view1.column2
FROM SCHEMA2.TABLE_2 table2
LEFT JOIN SCHEMA2.VIEW_1 view1
ON table2.column2 = view1.column3
Quindi la clausola ON corrisponderà alle stesse righe in table1
più di una volta:
ON (table1.column3 = t2.column1 )
Oracle non riesce a capire quale valore di t2.column2
dovrebbe essere usato nell'AGGIORNAMENTO, quindi lancia ORA-30926
.
L'uso di distinto nella sottoquery non aiuta perché fornisce permutazioni di tutte le colonne. Devi scrivere una sottoquery che produca valori univoci di t2.column1
su tutte le righe o aggiungi un'altra o più colonne identificative per generare una chiave univoca che puoi unire a table1
.