sql >> Databáze >  >> RDS >> Oracle

Oracle sql MERGE INTO s jedinou klauzulí where

V tomto příkladu je váš problém určitě v poddotazu USING. Tento dotaz vytváří více než jednu hodnotu table2.column1 :

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

Klauzule ON tedy bude odpovídat stejnému řádku (řádkům) v table1 více než jednou:

ON (table1.column3 = t2.column1 )

Oracle nemůže zjistit, která hodnota t2.column2 by měl být použit v UPDATE, takže mrští ORA-30926 .

Použití odlišných v poddotazu nepomáhá, protože to poskytuje permutace všech sloupců. Musíte napsat poddotaz, který bude produkovat jedinečné hodnoty t2.column1 přes všechny řádky, nebo přidejte další identifikační sloupce a vygenerujte jedinečný klíč, který můžete připojit k table1 .



  1. Jak přijímat automatická upozornění na změny v tabulkách?

  2. ORA 01400 a ORA 02296:Nelze vložit hodnotu null nebo upravit přidané vlastnosti sloupce na NOT NULL

  3. Zadané heslo pro uživatelský účet 'root' není platné nebo se nepodařilo připojit k databázovému serveru

  4. převod hashmap na stringarray