Voor dit voorbeeld zit je probleem zeker in de USING subquery. Deze zoekopdracht levert meer dan één waarde op van table2.column1
:
SELECT DISTINCT table2.column1,
view1.column2
FROM SCHEMA2.TABLE_2 table2
LEFT JOIN SCHEMA2.VIEW_1 view1
ON table2.column2 = view1.column3
Dus de ON-clausule komt overeen met dezelfde rij(en) in table1
meer dan eens:
ON (table1.column3 = t2.column1 )
Oracle kan niet achterhalen welke waarde van t2.column2
moet worden gebruikt in de UPDATE, dus het slingert ORA-30926
.
Het gebruik van distinct in de subquery helpt niet, want dat geeft permutaties van alle kolommen. U moet een subquery schrijven die unieke waarden van t2.column1
. oplevert over alle rijen, of voeg nog een identificerende kolom(men) toe om een unieke sleutel te genereren die u kunt koppelen aan table1
.