1. ホーム
  2. sql

[解決済み] Oracleを使ったSELECT INTO

2022-03-12 17:27:11

質問

Oracleを使用してSELECT INTOをしようとしています。私のクエリは次のとおりです。

SELECT * INTO new_table FROM old_table;

しかし、次のようなエラーが発生します。

SQL Error: ORA-00905: missing keyword
00905. 00000 -  "missing keyword"

何が問題なのか、何か思い当たることはありますか?


上記のStandardの動作は、私が当初考えていた通りのはずです。 しかし、Oracleは彼らのSQLの方言で全く異なる実装をしています。 Oracle Docs on Insert ... 選択

解決方法は?

NEW_TABLEがすでに存在する場合、...

insert into new_table 
select * from old_table
/

OLD_TABLEのレコードを元にNEW_TABLEを作成したい場合 ...。

create table new_table as 
select * from old_table
/

もし、新しいが空のテーブルを作成することが目的であれば、決して真にならない条件を持つWHERE句を使用します。

create table new_table as 
select * from old_table
where 1 = 2
/

CREATE TABLE ... を覚えておいてください。AS SELECTは、ソーステーブルと同じ投影を持つテーブルのみを作成することを忘れないでください。新しいテーブルは、元のテーブルが持つ可能性のある制約、トリガ、インデックスを持ちません。これらは(必要であれば)まだ手動で追加しなければなりません。