SQL INSERT INTO SELECT文
SQL を使用すると、あるテーブルから別のテーブルに情報をコピーできます。
INSERT INTO SELECT 文は、あるテーブルからデータをコピーし、そのデータを既存のテーブルに挿入します。
SQL INSERT INTO SELECT 文
INSERT INTO SELECT 文は、あるテーブルからデータをコピーし、そのデータを既存のテーブルに挿入します。対象テーブルの既存の行には影響しません。
SQL INSERT INTO SELECT 構文
あるテーブルのすべての列をコピーして、別の既存テーブルに挿入できます:
INSERT INTO table2
SELECT * FROM table1;
SELECT * FROM table1;
または、指定した列だけをコピーして、別の既存テーブルに挿入することもできます:
INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;
(column_name(s))
SELECT column_name(s)
FROM table1;
デモデータベース
このチュートリアルでは、サンプル サンプルデータベースを使用します。
以下は "Websites" テーブルから選択したデータです:
+----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | サンプル | http://www.example.com/ | 4689 | CN | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND | +----+---------------+---------------------------+-------+---------+
以下は "apps" アプリのデータです:
mysql> SELECT * FROM apps; +----+------------+-------------------------+---------+ | id | app_name | url | country | +----+------------+-------------------------+---------+ | 1 | QQ APP | http://im.qq.com/ | CN | | 2 | 微博 APP | http://weibo.com/ | CN | | 3 | 淘宝 APP | https://www.taobao.com/ | CN | +----+------------+-------------------------+---------+ 3 rows in set (0.00 sec)
SQL INSERT INTO SELECT の例
"apps" のデータをコピーして "Websites" に挿入します:
例
INSERT INTO Websites (name, country)
SELECT app_name, country FROM apps;
SELECT app_name, country FROM apps;
id=1 のデータのみを "Websites" にコピーします:
例
INSERT INTO Websites (name, country)
SELECT app_name, country FROM apps
WHERE id=1;
SELECT app_name, country FROM apps
WHERE id=1;