目次
select文の結果をinsertする(insert ~ select)
INSERT INTO テーブル名 SELECT 項目名 FROM テーブル名 |
INSERT INTO employee1
SELECT * FROM employee2
- select文の結果をテーブルに挿入するINSERT文です。
- selectして複数行取得した場合は、複数行がinsertされます。
使用例
以下、2つのテーブルがあるとします。
id | name | romaji |
---|---|---|
1 | 鈴木 | suzuki |
2 | 田中 | null |
3 | 佐藤 | null |
2つめのテーブルにはデータはありません。
id | name | romaji |
---|---|---|
SQL文
上記のemployee2テーブルでselectしてemployee1テーブルにinsertします。
INSERT INTO employee1
SELECT * FROM employee2
2行目でselectした結果(3行のデータ)を1行目のテーブルにinsertしています。
結果
実行結果は、以下のとおりです。
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テーブルです。
id | name | romaji |
---|---|---|
1 | 鈴木 | suzuki |
2 | 田中 | tanaka |
3 | 佐藤 | sato |
2つめのemployee1テーブルです。
データはありません。
id | name | romaji |
---|---|---|
SQL文
上記のemployee2テーブルで列を指定してselectし、employee1テーブルにinsertします。
INSERT INTO employee1 (
id,
name
)
SELECT
id,
name
FROM employee2
select文で指定した列名とinsert文の列名を対応させます。
結果
実行結果は、以下のとおりです。
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
関連の記事