MySQL select into from 与INSERT into select

今天,在做修改密码校验时,需要新建张表,来存储变更时间,但是又苦于如何把原表中的userID导入到新表中,一开始打算用

insert into table() values()

发现有问题,后来又想,要不直接插入到临时表,但是又有问题。。。

refer:https://my.oschina.net/xsh1208/blog/182164

简介

Insert是T-sql中常用语句,Insert INTO table(field1,field2,…) values(value1,value2,…)这种形式的在应用程序开发中必不可少。

但我们在开发、测试过程中,经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用select into from和 insert into select 表复制语句了。

Solution 1

1.语法

insert into table2(field1,field2,..) select value1,value2
from table1;

2.要求

  • 目标表t2必须存在;
  • 由于t2已经存在,所以除了插入源表t1的字段外,还可以插入常量

3.Demo

--1.创建测试表 
create TABLE Table1 
( 
    a varchar(10), 
    b varchar(10), 
    c varchar(10), 
    CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED 
    ( 
        a ASC 
    ) 
) ON [PRIMARY] 
create TABLE Table2 
( 
    a varchar(10), 
    c varchar(10), 
    d int, 
    CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED 
    ( 
        a ASC 
    ) 
) ON [PRIMARY] 
GO 
--2.创建测试数据 
Insert into Table1 values('赵','asds','90') 
Insert into Table1 values('钱','asds','100') 
Insert into Table1 values('孙','asds','80') 
Insert into Table1 values('李','asds',null) 
GO 
select * from Table2 
--3.INSERT INTO SELECT语句复制表数据 
Insert into Table2(a, c, d) select a,c,5 from Table1 
GO 
--4.显示更新后的结果 
select * from Table2 
GO 
--5.删除测试表 
drop TABLE Table1 
drop TABLE Table2

我的sql 是这样写的

insert into tblpassword('usercode')
select userid from tblmember

是不是炒鸡简单

Solution2

1.语法

select value1,value2 into table2 from table1

2.要求

  • 目标表不存在(table2)
  • 因为插入时会自动创建t2,并将t1中的指定字段复制到t2中

3.Demo

--1.创建测试表 
create TABLE Table1 
( 
    a varchar(10), 
    b varchar(10), 
    c varchar(10), 
    CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED 
    ( 
        a ASC 
    ) 
) ON [PRIMARY] 
GO 
--2.创建测试数据 
Insert into Table1 values('赵','asds','90') 
Insert into Table1 values('钱','asds','100') 
Insert into Table1 values('孙','asds','80') 
Insert into Table1 values('李','asds',null) 
GO 
--3.SELECT INTO FROM语句创建表Table2并复制数据 
select a,c INTO Table2 from Table1 
GO 
--4.显示更新后的结果 
select * from Table2 
GO 
--5.删除测试表 
drop TABLE Table1 
drop TABLE Table2

是否复制表结构。数据到新表

1、复制表结构及数据

CREATE TABLE 新表  
SELECT * FROM 旧表

2、只复制表结构

a、 
CREATE TABLE 新表
SELECT * FROM 旧表 WHERE 1=2(即:让WHERE条件不成立.)

b.
(低版本的mysql不支持,mysql4.0.25 不支持,mysql5已经支持了)
CREATE TABLE 新表 
        LIKE 旧表

3、复制旧表数据到新表(两表结构一样)

INSERT INTO 新表
select * from 旧表

4、复制旧表数据到新表(两表结构不一样)

INSERT INTO 新表(字段1,字段2,…….)
     SELECT 字段1,字段2,…… FROM 旧表

热评文章