SQL文--INSERT INTO SELECT文使用例

2135 ワード

SQLでは、あるテーブルから別のテーブルに情報をコピーできます.
INSERT INTO SELECT文は、1つのテーブルからデータをコピーし、既存のテーブルにデータを挿入します.
SQL INSERT INTO SELECT文
INSERT INTO SELECT文は、1つのテーブルからデータをコピーし、既存のテーブルにデータを挿入します.ターゲット・テーブルの既存のローは影響を受けません.
SQL INSERT INTO SELECT構文
あるテーブルからすべてのカラムをコピーして、別の既存のテーブルに挿入できます.
INSERT INTO table2
SELECT * FROM table1;

または、別の既存のテーブルに挿入するカラムのみをコピーできます.
INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;

 
デモデータベース
このチュートリアルでは、RUNOOBサンプルデータベースを使用します.
「Websites」テーブルから選択したデータを次に示します.
+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  |             | https://www.taobao.com/   | 13    | CN      |
| 3  |           | http://www.runoob.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」に挿入します.
≪インスタンス|Instance|emdw≫
INSERT INTO Websites (name, country)
SELECT app_name, country FROM apps;

QQのアプリだけを「Websites」に返信します.
≪インスタンス|Instance|emdw≫
INSERT INTO Websites (name, country)
SELECT app_name, country FROM apps
WHERE id=1;