sql >> Database teknologi >  >> RDS >> Oracle

Oracle sql MERGE INTO med en enkelt where-klausul

For dette eksempel er dit problem helt sikkert i USING underforespørgslen. Denne forespørgsel producerer mere end én værdi af 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-sætningen vil matche de samme række(r) i table1 mere end én gang:

ON (table1.column3 = t2.column1 )

Oracle kan ikke finde ud af, hvilken værdi af t2.column2 skal bruges i OPDATERING, så den sender ORA-30926 .

Det hjælper ikke at bruge distinct i underforespørgslen, fordi det giver permutationer af alle kolonnerne. Du skal skrive en underforespørgsel, som vil producere unikke værdier af t2.column1 på tværs af alle rækker, eller tilføj en anden identificerende kolonne(r) for at generere en unik nøgle, som du kan tilslutte til table1 .



  1. Hvordan udtrækkes det n'te ord og tælles ordforekomster i en MySQL-streng?

  2. Hvordan synkroniserer jeg to Oracle-databaser?

  3. Oracle flytte kolonne til den første position

  4. Sådan konverteres mysql til laravel query builder