Ответ 1
Ваш запрос должен быть:
insert into table1 (col1, col2)
select t1.col1, t2.col2
from oldtable1 t1, oldtable2 t2
т.е. без части VALUES
.
Я пытаюсь запустить очень простой 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. Что-то не так с моим выражением, но я не уверен, что это такое.
Ваш запрос должен быть:
insert into table1 (col1, col2)
select t1.col1, t2.col2
from oldtable1 t1, oldtable2 t2
т.е. без части VALUES
.
Избавьтесь от ключевого слова values
и parens. Вы можете увидеть пример здесь.
Вам не нужно предложение "values" при использовании "select" в качестве источника.
insert into table1 (col1, col2)
select t1.col1, t2.col2 from oldtable1 t1, oldtable2 t2;
для вставки данных в таблицу вы можете написать
insert into tablename values(column_name1,column_name2,column_name3);
но напишите column_name
в последовательности согласно последовательности в таблице...
Существует еще одна возможность вставки данных в таблицу.
insert into tablename values(&column_name1,&column_name2,&column_name3);
он откроет другое окно для ввода значения данных.