Подтвердить что ты не робот

Оператор INSERT SELECT в Oracle 11G

Я пытаюсь запустить очень простой SQL-запрос в Oracle 11g.

 insert into table1 (col1, col2) values (select t1.col1, t2.col2 from oldtable1 t1, oldtable2 t2);

Очень простой запрос. Декартовы присоединяют старую таблицу 1 к старой таблице 2, помещают полученные значения в таблицу 1.

Я запустил подзапрос сам по себе, и он отлично работает.

 select t1.col1, t2.col2 from oldtable1 t1, oldtable2 t2

Когда я пытаюсь запустить полный оператор, я получаю следующую ошибку:

 SQL Error: ORA-00936: missing expression
 00936. 00000 -  "missing expression"

Я не могу заставить его работать в MySql. Что-то не так с моим выражением, но я не уверен, что это такое.

4b9b3361

Ответ 1

Ваш запрос должен быть:

insert into table1 (col1, col2) 
select t1.col1, t2.col2 
from oldtable1 t1, oldtable2 t2

т.е. без части VALUES.

Ответ 2

Избавьтесь от ключевого слова values и parens. Вы можете увидеть пример здесь.

Ответ 3

Вам не нужно предложение "values" при использовании "select" в качестве источника.

insert into table1 (col1, col2) 
select t1.col1, t2.col2 from oldtable1 t1, oldtable2 t2;

Ответ 4

для вставки данных в таблицу вы можете написать

insert into tablename values(column_name1,column_name2,column_name3);

но напишите column_name в последовательности согласно последовательности в таблице...

Ответ 5

Существует еще одна возможность вставки данных в таблицу.

insert into tablename values(&column_name1,&column_name2,&column_name3);

он откроет другое окно для ввода значения данных.