sql >> Base de Datos >  >> RDS >> Oracle

Oracle sql MERGE INTO con una única cláusula where

Para este ejemplo, su problema definitivamente está en la subconsulta USING. Esta consulta produce más de un valor de table2.column1 :

SELECT DISTINCT table2.column1, 
        view1.column2
 FROM SCHEMA2.TABLE_2 table2
 LEFT JOIN SCHEMA2.VIEW_1 view1
 ON table2.column2 = view1.column3

Entonces, la cláusula ON coincidirá con la(s) misma(s) fila(s) en table1 más de una vez:

ON (table1.column3 = t2.column1 )

Oracle no puede averiguar qué valor de t2.column2 debe usarse en la ACTUALIZACIÓN, por lo que lanza ORA-30926 .

El uso de distinto en la subconsulta no ayuda porque da permutaciones de todas las columnas. Debe escribir una subconsulta que producirá valores únicos de t2.column1 en todas las filas, o agregue otra(s) columna(s) de identificación para generar una clave única que pueda unir a table1 .