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;
演示数据库
在本教程中,我们将使用 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" 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;
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;


FelixLan
130***3566@qq.com
参考地址
select into from 和 insert into select 都是用来复制表
两者的主要区别为: select into from 要求目标表不存在,因为在插入时会自动创建;insert into select from 要求目标表存在。
1. 复制表结构及其数据:
2. 只复制表结构:
或者:
3. 只复制表数据:
如果两个表结构一样:
如果两个表结构不一样:
FelixLan
130***3566@qq.com
参考地址
i帝流浆
118***7882@qq.com
稍微整理一下 select into from 和 insert into select 的理解层面的区别
select into from :将查询出来的数据整理到一张新表中保存,表结构与查询结构一致。