web-dev-qa-db-ja.com

Oracle 11GのINSERT SELECTステートメント

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でも機能しません。私の声明には何か問題がありますが、何であるかはわかりません。

33
Brian

クエリは次のようになります。

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

つまりVALUES部分なし。

77
Ryan

valuesキーワードと括弧を取り除きます。あなたは例を見ることができます here

これは基本的なINSERT構文です。

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

これはINSERT SELECT構文です。

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

ソースとして「select」を使用する場合、「values」句は必要ありません。

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

テーブルにデータを挿入するためにあなたが書くことができます

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

しかし、column_name表のシーケンスごとのシーケンス...

1
sudarshan

テーブルにデータを挿入する別のオプションがあります。

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

データ値を挿入するための別のウィンドウが開きます。

1
sudarshan