この例では、問題は間違いなくUSINGサブクエリにあります。このクエリは、table2.column1
の複数の値を生成します :
SELECT DISTINCT table2.column1,
view1.column2
FROM SCHEMA2.TABLE_2 table2
LEFT JOIN SCHEMA2.VIEW_1 view1
ON table2.column2 = view1.column3
したがって、ON句はtable1
の同じ行に一致します 複数回:
ON (table1.column3 = t2.column1 )
Oracleは、t2.column2
のどの値を把握できません。 UPDATEで使用する必要があるため、ORA-30926
がスローされます。 。
サブクエリでdistinctを使用しても、すべての列の順列が得られるため、役に立ちません。 t2.column1
の一意の値を生成するサブクエリを作成する必要があります すべての行にわたって、または別の識別列を追加して、table1
に結合できる一意のキーを生成します 。