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 ...