Oracle 11G中的INSERT SELECT语句

Bri*_*ian 33 sql oracle oracle11g

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

 insert into table1 (col1, col2) values (select t1.col1, t2.col2 from oldtable1 t1, oldtable2 t2);
Run Code Online (Sandbox Code Playgroud)

非常简单的查询.笛卡尔将旧表1连接到旧表2,将结果值放入表1中.

我自己运行子查询,它完美地运行.

 select t1.col1, t2.col2 from oldtable1 t1, oldtable2 t2
Run Code Online (Sandbox Code Playgroud)

当我尝试运行完整语句时,我收到以下错误:

 SQL Error: ORA-00936: missing expression
 00936. 00000 -  "missing expression"
Run Code Online (Sandbox Code Playgroud)

我无法让它在MySql中工作.我的陈述有些不对劲,但我不确定它是什么.

Rya*_*yan 77

您的查询应该是:

insert into table1 (col1, col2) 
select t1.col1, t2.col2 
from oldtable1 t1, oldtable2 t2
Run Code Online (Sandbox Code Playgroud)

即没有VALUES部分.


cwa*_*ole 13

摆脱values关键词和parens.你可以在这里看到一个例子.

这是基本的INSERT语法:

INSERT INTO "table_name" ("column1", "column2", ...)
VALUES ("value1", "value2", ...);
Run Code Online (Sandbox Code Playgroud)

这是INSERT SELECT语法:

INSERT INTO "table1" ("column1", "column2", ...)
SELECT "column3", "column4", ...
FROM "table2";
Run Code Online (Sandbox Code Playgroud)


Cha*_*ins 8

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

insert into table1 (col1, col2) 
select t1.col1, t2.col2 from oldtable1 t1, oldtable2 t2;
Run Code Online (Sandbox Code Playgroud)