Inserir uma instrução de selecção no Oracle 11G

Estou a tentar executar uma simples declaração sql no Oracle 11g.
 insert into table1 (col1, col2) values (select t1.col1, t2.col2 from oldtable1 t1, oldtable2 t2);
Muito simples. Juntar a tabela 1 à tabela 2 antiga cartesiana, colocar os valores resultantes na tabela 1.

Já geri a subquaria sozinha, e funciona perfeitamente.

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

Quando tento executar a declaração completa, recebo o seguinte erro:

 SQL Error: ORA-00936: missing expression
 00936. 00000 -  "missing expression"
Também não consigo pô-lo a funcionar em MySql. Há algo de errado com a minha declaração, mas não sei bem o que é.

Author: Brian, 2011-09-06

5 answers

A sua pergunta deve ser:

insert into table1 (col1, col2) 
select t1.col1, t2.col2 
from oldtable1 t1, oldtable2 t2
Isto é, sem a parte de VALUES.
 70
Author: Ryan, 2013-06-21 14:59:25

Livra-te da palavra-chave values e dos pais. Você pode ver um exemplo aqui.

Esta é a sintaxe básica de inserção:

INSERT INTO "table_name" ("column1", "column2", ...)
VALUES ("value1", "value2", ...);

Este é O INSERT SELECT syntax:

INSERT INTO "table1" ("column1", "column2", ...)
SELECT "column3", "column4", ...
FROM "table2";
 9
Author: cwallenpoole, 2018-05-31 16:30:16

Você não precisa da cláusula de 'valores' ao usar um 'select' como sua fonte.

insert into table1 (col1, col2) 
select t1.col1, t2.col2 from oldtable1 t1, oldtable2 t2;
 7
Author: Chains, 2011-09-06 16:56:13

Para inserir dados na tabela você pode escrever

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

Mas escreva o column_name na sequência como por sequência na tabela ...

 1
Author: sudarshan, 2017-01-23 19:54:14

Existe uma outra opção para inserir dados na tabela ..

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

Irá abrir outra janela para inserir o valor dos dados..

 1
Author: sudarshan, 2017-01-23 19:54:29