把一个表的数据插入到另一个表:INSERT INTO SELECT / SELECT INTO
2010-02-04 16:36
447 查看
经常会看到这样的问题:
怎样把一个表的数据插入到另外一张表?
怎么有条件的把一个表的数据插入到另外一张表中?
不使用游标怎么把一个表的数据插入到另外一张表?
有两种方法可以是实现,而且不使用游标.下面两种方法性能远好于游标.
USE AdventureWorks
GO
----Create TestTable
CREATE TABLE TestTable (FirstName VARCHAR(100), LastName VARCHAR(100))
----INSERT INTO TestTable using SELECT
INSERT INTO TestTable (FirstName, LastName)
SELECT FirstName, LastName
FROM Person.Contact
WHERE EmailPromotion = 2
----Verify that Data in TestTable
SELECT FirstName, LastName
FROM TestTable
----Clean Up Database
DROP TABLE TestTable
GO
USE AdventureWorks
GO
----Create TestTable
CREATE TABLE TestTable (FirstName VARCHAR(100), LastName VARCHAR(100))
----INSERT INTO TestTable using SELECT
INSERT INTO TestTable --(FirstName, LastName)
SELECT FirstName, LastName
FROM Person.Contact
WHERE EmailPromotion = 2
----Verify that Data in TestTable
SELECT FirstName, LastName
FROM TestTable
----Clean Up Database
DROP TABLE TestTable
GO
仔细看看有什么区别.
USE AdventureWorks
GO
----Create new table and insert into table using SELECT INSERT
SELECT FirstName, LastName
INTO TestTable
FROM Person.Contact
WHERE EmailPromotion = 2
----Verify that Data in TestTable
SELECT FirstName, LastName
FROM TestTable
----Clean Up Database
DROP TABLE TestTable
GO
我也常用它来复制数据结构,但不插入数据.
USE AdventureWorks
GO
----Create new table and insert into table using SELECT INSERT
SELECT FirstName, LastName
INTO TestTable
FROM Person.Contact
WHERE 1=2
DROP TABLE TestTable
GO
怎样把一个表的数据插入到另外一张表?
怎么有条件的把一个表的数据插入到另外一张表中?
不使用游标怎么把一个表的数据插入到另外一张表?
有两种方法可以是实现,而且不使用游标.下面两种方法性能远好于游标.
1.INSERT INTO SELECT
这种方法常用在目标表已经存在数据库中.需要从源表把数据插入到目标表的情况.如果目标表和源表的列相同,就不必列出数据列了.USE AdventureWorks
GO
----Create TestTable
CREATE TABLE TestTable (FirstName VARCHAR(100), LastName VARCHAR(100))
----INSERT INTO TestTable using SELECT
INSERT INTO TestTable (FirstName, LastName)
SELECT FirstName, LastName
FROM Person.Contact
WHERE EmailPromotion = 2
----Verify that Data in TestTable
SELECT FirstName, LastName
FROM TestTable
----Clean Up Database
DROP TABLE TestTable
GO
USE AdventureWorks
GO
----Create TestTable
CREATE TABLE TestTable (FirstName VARCHAR(100), LastName VARCHAR(100))
----INSERT INTO TestTable using SELECT
INSERT INTO TestTable --(FirstName, LastName)
SELECT FirstName, LastName
FROM Person.Contact
WHERE EmailPromotion = 2
----Verify that Data in TestTable
SELECT FirstName, LastName
FROM TestTable
----Clean Up Database
DROP TABLE TestTable
GO
仔细看看有什么区别.
2.SELECT INTO
这种方法用在目标表事先不存在于数据库.在插入数据的同时新建表.新表的字段名和数据类型和需要插入的列相同.USE AdventureWorks
GO
----Create new table and insert into table using SELECT INSERT
SELECT FirstName, LastName
INTO TestTable
FROM Person.Contact
WHERE EmailPromotion = 2
----Verify that Data in TestTable
SELECT FirstName, LastName
FROM TestTable
----Clean Up Database
DROP TABLE TestTable
GO
我也常用它来复制数据结构,但不插入数据.
USE AdventureWorks
GO
----Create new table and insert into table using SELECT INSERT
SELECT FirstName, LastName
INTO TestTable
FROM Person.Contact
WHERE 1=2
DROP TABLE TestTable
GO
相关文章推荐
- 把一个表的数据插入到另一个表:INSERT INTO SELECT / SELECT INTO
- 【转】把一个表的数据插入到另一个表:INSERT INTO SELECT / SELECT INTO
- mysql中如何使用一句话将一个表的数据导入到另一个表中:insert into ...select
- mysql 使用select插入多条数据,insert into (1,2,3,4,)select(1,2,3,4)
- 如何优化用SQL语句INSERT INTO … SELECT插入数据时锁全表的问题
- 如何优化用SQL语句INSERT INTO … SELECT插入数据时锁全表的问题
- MYSQL INSERT INTO SELECT 不插入重复数据
- 优化用SQL语句INSERT INTO … SELECT插入数据时锁全表的问题
- oracle 通过查询灵活插入数据 insert into ...select..
- insert into select 批量插入数据
- 关于select和insert,将一个表中的部分数据复制到另一个表中
- mysql insert into select插入表中的数据与select的数据不一样
- MYSQL INSERT INTO SELECT 不插入重复数据
- 插入数据 insert into / select
- insert into select 插入不进去数据
- INSERT INTO .. SELECT ... FROM DUAL WHERE.插入数据前判断表中是否已经存在
- MYSQL INSERT INTO SELECT 不插入重复数据
- 从一个表读取数据插入到另一个表中(INSERT INTO)
- oracle 通过查询灵活插入数据 insert into ...select..
- [乐意黎转载]MYSQL INSERT INTO SELECT 不插入重复数据