sql >> Databasteknik >  >> RDS >> Oracle

Oracle sql MERGE INTO med en singel where-klausul

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 .



  1. Är det möjligt att använda SqlGeography med Linq till Sql?

  2. Spring Boot kan inte ansluta till MySQLand-utgångar i Docker/Docker compose

  3. Uppdatera summan baserat på föregående saldorad

  4. Optimera en postgres likhetsfråga (pg_trgm + gin index)