今天做项目用到了insert into select,将联表查询结果直接插入到数据库中,不需要程序进行参数映射什么的,很方便!
实操数据库:MySQL5.7
Insert into select
语句形式
Insert into Table2(field1,field2,...) select value1,value2,... from Table1
他要求Table2必须存在,而将查询的Table1结果作为值插入到Table2中
简单示例:
insert into my_test_1(id,created_by) SELECT id,created_by from my_test
Select into
语句形式
SELECT vale1, value2 into Table2 from Table1
他要求目标表table2不存在,并把table1中的数据复制到table2中
简单示例:
select bookID,bookName into book2 from books
错误:
这里我百度了一下,好像是说MySQL不支持select into写法,我想了想我之前都是在Oracle执行过,也许MySQL并不支持这种写法!
替代方案:
方式一:结构与数据都拿过来
Create table Table2 (Select * from Table1);
以Table1的结果和结构创建Table2
示例:
create table book2(select * from books)
方式二:只拿结构不拿数据
Create table Table2 like Table1;
以Table1的结构创建Table2
示例:
create table book3 like books;