我正在尝试在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中使用它。我的陈述有些不对劲,但我不确定它是什么。
答案 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);
它会打开另一个窗口来插入数据值..