MERGE: при несовпадении вставьте с помощью оператора select - PullRequest
0 голосов
/ 18 июня 2020

Я ищу правильный синтаксис для вставки из оператора select при слиянии. Вот что я сделал на данный момент, и у меня есть ORA-00926:

MERGE INTO table A
USING table B ON (...)
WHEN NOT MATCHED THEN
INSERT (column 1, column 2, ...)
SELECT column 1, column 2, ...
FROM table C
INNER JOIN other tables ...

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Я думаю, что лучший способ написать эти утверждения - это поместить данные, которые вы пытаетесь объединить, в предложение USING. И вы не даете нам свою оговорку ON, поэтому я не могу точно сказать, как это работает.

MERGE INTO table_a A
USING ( SELECT B.id, C.col_1, C.col_2
          FROM table_c B
          LEFT JOIN table_c C on C.id = B.id ) D
   ON ( A.id = D.id )
 WHEN NOT MATCHED THEN INSERT ( col_3, col_4 )
      VALUES ( D.col_1, D.col_2 )
0 голосов
/ 18 июня 2020

Вы можете попробовать что-то вроде этого:

MERGE INTO table A
USING table B ON (...)
WHEN NOT MATCHED THEN
INSERT (c1, c2) VALUES (
(SELECT c1 FROM table C WHERE ...),
(SELECT c2 FROM table C WHERE ...)
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...