他のテーブルデータから登録
INSERTでは、VALUES句をSELECT文に置き換え、他のテーブルのデータを登録することが可能です。
INSERT INTO テーブル名 (列1, 列2, 列3 ・・・ )
SELECT 列1, 列2, 列3 ・・・ FROM 元テーブル名;
登録先と登録元のテーブル構造が同じであるならば、列名の省略が可能です。
それではサンプルを見てみましょう。
以下のようなitemテーブル(上)とstockテーブル(下)があります。
id | name | price | comment |
---|---|---|---|
1 | りんご | 100 | ジューシー |
2 | レモン | 150 | null |
z_id | z_name | z_price | storing_days | z_comment |
---|---|---|---|---|
10 | すいか | 500 | 30 | null |
11 | メロン | 800 | 25 | null |
指定した列に対しstockテーブルからデータを登録するためのSQLです。
1 2 |
INSERT INTO item (id, name, price, comment) SELECT z_id, z_name, z_price, '在庫品' FROM stock; |
上記を実行した結果がこちらです。
id | name | price | comment |
---|---|---|---|
1 | りんご | 100 | ジューシー |
2 | レモン | 150 | null |
10 | すいか | 500 | 在庫品 |
11 | メロン | 800 | 在庫品 |
SELECTで指定したstockテーブルのデータがitemテーブルに登録されました。
commentにはSELECT句で’在庫品’という文字列を直接指定しています。
また、WHERE句を指定することで登録元のテーブルの特定のレコードのみを、登録先のテーブルへ登録することも可能です。
以上が、他のテーブルのデータを登録する「INSERT ~ SELECT」の使い方です。
ぜひ参考にしてみてください。