Oracle 11G中的INSERT SELECT语句

时间:2011-09-06 16:53:40

标签: sql oracle oracle11g

我正在尝试在Oracle 11g中运行一个非常简单的sql语句。

 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中使用它。我的陈述有些不对劲,但我不确定它是什么。

5 个答案:

答案 0 :(得分:73)

您的查询应该是:

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

即。没有VALUES部分。

答案 1 :(得分:11)

摆脱values关键字和parens。您可以看到示例here

这是基本的INSERT语法:

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

这是INSERT SELECT语法:

INSERT INTO "table1" ("column1", "column2", ...)
SELECT "column3", "column4", ...
FROM "table2";

答案 2 :(得分:8)

使用'select'作为源时,您不需要'values'子句。

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

答案 3 :(得分:1)

用于将数据插入表中,您可以编写

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

但按照表格中的序列在序列中写column_name

答案 4 :(得分:1)

还有另一种方法可以将数据插入表格中。

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

它会打开另一个窗口来插入数据值..