SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。
MySQL 数据库不支持 SELECT ... INTO 语句,但支持 INSERT INTO ... SELECT 。可使用以下语句拷贝表结构及数据:
CREATE TABLE 新表
AS
SELECT * FROM 旧表
复制一个表的数据到新表中:
select */column_names
into newtable
from table
(where ...)
复制多个表的数据到新表中:
SELECT Websites.name, access_log.count, access_log.date
INTO WebsitesBackup2016
FROM Websites
LEFT JOIN access_log
ON Websites.id=access_log.site_id;
SELECT INTO 语句可用于通过另一种模式创建一个新的空表。只需要添加促使查询没有数据返回的 WHERE 子句即可:
SELECT *
INTO newtable
FROM table1
WHERE 1=0;
总结:
SELECT INTO 用来复制表和表结构是非常方便的,特别是在进行表之间计算时,可以将部分数据先插入到一个临时表中,计算完成再删除该临时表。INSERT INTO SELECT则是插入语句的另外的一种写法,可以直接将查询的结果插入到需要的表中,从而省去逐条手工插入数据的过程。