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;

或者我们可以只复制指定的列插入到另一个已存在的表中:

INSERT INTO table2
( column_name ( s ) )
SELECT column_name ( s )
FROM table1;


演示数据库

在本教程中,我们将使用 yssmx 样本数据库。

下面是选自 "Websites" 表的数据:

									+----+--------------+---------------------------+-------+---------+
| id_name        _url                      _alexa_country |
+----+--------------+---------------------------+-------+---------+
| 1 _Google      _https://www.google.cm/   _1    _USA     |
| 2 _淘宝         _https://www.taobao.com/  _13   _CN      |
| 3 _云搜索MX教程     _/   _4689 _CN      |
| 4 _微博         _http://weibo.com/        _20   _CN      |
| 5 _Facebook    _https://www.facebook.com/_3    _USA     |
| 7 _stackoverflow_http://stackoverflow.com/_  0_IND     |
+----+---------------+---------------------------+-------+---------+
								

下面是 "apps" APP 的数据:

									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;

只复 id=1 的数据到 "Websites" 中:

实例

INSERT INTO Websites ( name , country )
SELECT app_name , country FROM apps
WHERE id = 1 ;