För det här exemplet ligger ditt problem definitivt i underfrågan USING. Den här frågan producerar mer än ett värde för table2.column1
:
SELECT DISTINCT table2.column1,
view1.column2
FROM SCHEMA2.TABLE_2 table2
LEFT JOIN SCHEMA2.VIEW_1 view1
ON table2.column2 = view1.column3
Så ON-satsen kommer att matcha samma rad(er) i table1
mer än en gång:
ON (table1.column3 = t2.column1 )
Oracle kan inte ta reda på vilket värde på t2.column2
bör användas i UPPDATERING, så den slungar ORA-30926
.
Att använda distinkt i underfrågan hjälper inte eftersom det ger permutationer av alla kolumner. Du måste skriva en underfråga som ger unika värden för t2.column1
över alla rader, eller lägg till ytterligare en identifierande kolumn(er) för att generera en unik nyckel som du kan ansluta till table1
.