Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle sql MERGE INTO с една клауза where

За този пример вашият проблем определено е в подзаявката USING. Тази заявка произвежда повече от една стойност на table2.column1 :

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

Така че клаузата ON ще съответства на същия ред(ове) в table1 повече от веднъж:

ON (table1.column3 = t2.column1 )

Oracle не може да разбере коя е стойността на t2.column2 трябва да се използва в АКТУАЛИЗАЦИЯТА, така че хвърля ORA-30926 .

Използването на distinct в подзаявката не помага, защото това дава пермутации на всички колони. Трябва да напишете подзаявка, която ще генерира уникални стойности на t2.column1 във всички редове или добавете друга идентифицираща колона(и), за да генерирате уникален ключ, който можете да присъедините към 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. Защо Oracle SQL Optimizer игнорира предиката на индекса за този изглед?

  2. SQL - Множество стойности, разделени със запетая, когато използвате GROUP BY

  3. Oracle Как да се предостави CREATE ANY DIRECTORY с ограничението, че всички директории трябва да бъдат създадени в дадена директория?

  4. WHERE IN условие не приема стойност на низ

  5. oracle заявка Свържете всички колони с ','