Oracle: INSERT значения из SELECT...JOIN, ошибка SQL: ORA-00947: недостаточно значений

Я пытаюсь сделать следующее:

INSERT INTO MyTable(a, b, c)
SELECT a FROM source1
JOIN source2 ON ...

Где source2 содержит столбцы B и C.

Однако Oracle, похоже, не нравится это и говорит мне "Ошибка SQL: ORA-00947: недостаточно значений".

Я что-то здесь не так делаю? Этот синтаксис вообще возможен? Или я должен переписать это как:

SELECT a, b, c FROM source1, source2 WHERE ....

Спасибо!

2 ответа

Решение

Используйте столько же идентификаторов в предложении SELECT, сколько в предложении INSERT, например:

INSERT INTO MyTable(a, b, c)
SELECT s1.a, s2.b, s2.c FROM source1 s1
  JOIN source2 s2 ON ...

Выбор должен вернуть такое же количество столбцов, как вы перечислили в INSERT заявление.

Итак: да, вам нужно переписать запрос SELECT a,b,c FROM ...

Другие вопросы по тегам