Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle sql MERGE INTO z pojedynczą klauzulą ​​where

W tym przykładzie Twój problem jest zdecydowanie w podzapytaniu USING. To zapytanie generuje więcej niż jedną wartość table2.column1 :

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

Tak więc klauzula ON będzie pasować do tych samych wierszy w table1 więcej niż raz:

ON (table1.column3 = t2.column1 )

Oracle nie może ustalić, która wartość t2.column2 powinien być używany w UPDATE, więc rzuca ORA-30926 .

Użycie w podzapytaniu odrębnego nie pomaga, ponieważ daje to permutacje wszystkich kolumn. Musisz napisać podzapytanie, które wygeneruje unikalne wartości t2.column1 we wszystkich wierszach lub dodaj kolejne kolumny identyfikujące, aby wygenerować unikalny klucz, który możesz dołączyć do table1 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Korzystanie z Dapper QueryMultiple w Oracle

  2. Polecenia tworzenia kopii zapasowej listy RMAN

  3. Oracle zwraca ten sam alias dla różnych przypadków w wybranych

  4. Instrukcja Oracle SELECT wolno

  5. Zmienna/dosłowna zamiana kursorów PL/SQL?