他のテーブルのレコードの値をテーブルに挿入(INSERT)する

他のテーブルのレコードの値をテーブルに挿入(INSERT)するSQL文を紹介します。

書式

他のテーブルのレコードの値をを挿入する場合は下記の書式を利用します。

INSERT INTO 挿入するテーブル名(列名1, 列名2, ...) SELECT (参照元テーブル列名1, 参照元テーブル列名2, ...) FROM 参照元テーブル名
INSERT INTO 挿入するテーブル名(列名1, 列名2, ...) SELECT (参照元テーブル列名1, 参照元テーブル列名2, ...) FROM 参照元テーブル名 WHERE (参照元テーブルからの抽出の条件式)

記述例

他のテーブルの内容を挿入するSQLの記述例です。

Table_Bのレコードを下記とします。

Table_B
idXnameXcategoryXprice
230ぺんぎん56800
231あひる2800
232かるがも2400

Table_Aの構造を下記とします。

Table_A (idは自動採番)
idnamecategoryprice
1くま哺乳類8400000
2せみ昆虫120


下記のSQLを実行すると、Table_Bの id=230 の項目がTable_Aに挿入されます。

INSERT INTO Table_A(name, category) SELECT Xname,Xcategory FROM Table_B WHERE id = 230


挿入後のTable_Aは下記となります。

Table_A
idnamecategoryprice
1くま哺乳類8400000
2せみ昆虫120
3ぺんぎんNULL

記述例:固定値を挿入する場合

固定値を挿入する場合は下記のSQLを利用します。

INSERT INTO Table_A(name, category, price) 
SELECT Xname,Xcategory,'0' FROM Table_B WHERE id = 230

先の例Table_A, Table_Bで上記のSQLを実行すると実行後のTable_Aは下記になります。

Table_A
idnamecategoryprice
1くま哺乳類8400000
2せみ昆虫120
3ぺんぎん0

記述例:列名が同じ場合

参照元と挿入先の列名が同じ場合のSQL文の紹介です。

Table_Bのレコードを下記とします。

Table_SB
idnamecategoryprice
230ぺんぎん56800
231あひる2800
232かるがも2400

Table_Aの構造を下記とします。

Table_SA (idは自動採番)
idnamecategoryprice
1くま哺乳類840000
2せみ昆虫120


下記のSQLを実行すると、Table_Bの id=230 の項目がTable_Aに挿入されます。

INSERT INTO Table_SA(name, category) SELECT name,category FROM Table_SB WHERE id = 230
Table_SA
idnamecategoryprice
1くま哺乳類8400000
2せみ昆虫120
3ぺんぎんNULL
AuthorPortraitAlt
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
作成日: 2009-09-14
Copyright © 1995–2025 iPentec all rights reserverd.