SQL select文の結果をinsertするサンプル

目次

 

select文の結果をinsertする(insert ~ select)

INSERT INTO テーブル名
SELECT 項目名 FROM テーブル名
INSERT INTO employee1
SELECT * FROM employee2
  • select文の結果をテーブルに挿入するINSERT文です。
  • selectして複数行取得した場合は、複数行がinsertされます。

使用例

以下、2つのテーブルがあるとします。

employee2テーブル
id name romaji
1 鈴木 suzuki
2 田中 null
3 佐藤 null

2つめのテーブルにはデータはありません。

employee1テーブル
id name romaji
     

SQL文

上記のemployee2テーブルでselectしてemployee1テーブルにinsertします。

INSERT INTO employee1
SELECT * FROM employee2

2行目でselectした結果(3行のデータ)を1行目のテーブルにinsertしています。

結果

実行結果は、以下のとおりです。

employee1テーブル
id name romaji
1 鈴木 suzuki
2 田中 null
3 佐藤 null

employee2テーブルからemployee1テーブルにデータがinsertされました。

 

insert ~ selectで列を指定する場合

列を指定する場合、select文で指定した列名とinsert文の列名を対応させます。

INSERT INTO employee1 (
id,
name
)
SELECT
id,
name
FROM employee2

 

使用例

以下、2つのテーブルがあるとします。
1つめのemployee2テーブルです。

employee2テーブル
id name romaji
1 鈴木 suzuki
2 田中 tanaka
3 佐藤 sato

2つめのemployee1テーブルです。
データはありません。

employee1テーブル
id name romaji
     

SQL文

上記のemployee2テーブルで列を指定してselectし、employee1テーブルにinsertします。

INSERT INTO employee1 (
id,
name
)
SELECT
id,
name
FROM employee2

select文で指定した列名とinsert文の列名を対応させます。

結果

実行結果は、以下のとおりです。

employee1テーブル
id name romaji
1 鈴木 null
2 田中 null
3 佐藤 null

employee2テーブルからemployee1テーブルに指定した列のデータがinsertされました。
selectとinsertで指定していない列はnullになります。

 

固定文字列を指定

以下の3行目のように固定文字列を指定することもできます。
その場合employee1テーブルのname列には固定文字のtest1が設定されます。

INSERT INTO employee1 (
id,
'test1'
)
SELECT
id,
name
FROM employee2

関連の記事

SQL INSERT文でテーブルの行を追加するサンプル

△上に戻る