把一个表的数据插入到另一个表:INSERT INTO SELECT / SELECT INTO

经常会看到这样的问题:

怎样把一个表的数据插入到另外一张表?

怎么有条件的把一个表的数据插入到另外一张表中?

不使用游标怎么把一个表的数据插入到另外一张表?

有两种方法可以是实现,而且不使用游标.下面两种方法性能远好于游标.

 

1.INSERT INTO SELECT

 

这种方法常用在目标表已经存在数据库中.需要从源表把数据插入到目标表的情况.如果目标表和源表的列相同,就不必列出数据列了.

 

  1. USE AdventureWorks  
  2. GO  
  3. ----Create TestTable  
  4. CREATE TABLE TestTable (FirstName VARCHAR(100), LastName VARCHAR(100))  
  5. ----INSERT INTO TestTable using SELECT  
  6. INSERT INTO TestTable (FirstName, LastName)  
  7. SELECT FirstName, LastName  
  8. FROM Person.Contact  
  9. WHERE EmailPromotion = 2  
  10. ----Verify that Data in TestTable  
  11. SELECT FirstName, LastName  
  12. FROM TestTable  
  13. ----Clean Up Database  
  14. DROP TABLE TestTable  
  15. GO  
  1. USE AdventureWorks  
  2. GO  
  3. ----Create TestTable  
  4. CREATE TABLE TestTable (FirstName VARCHAR(100), LastName VARCHAR(100))  
  5. ----INSERT INTO TestTable using SELECT  
  6. INSERT INTO TestTable --(FirstName, LastName)  
  7. SELECT FirstName, LastName  
  8. FROM Person.Contact  
  9. WHERE EmailPromotion = 2  
  10. ----Verify that Data in TestTable  
  11. SELECT FirstName, LastName  
  12. FROM TestTable  
  13. ----Clean Up Database  
  14. DROP TABLE TestTable  
  15. GO  

仔细看看有什么区别.

 

 

2.SELECT INTO 

 

这种方法用在目标表事先不存在于数据库.在插入数据的同时新建表.新表的字段名和数据类型和需要插入的列相同.

 

  1. USE AdventureWorks  
  2. GO  
  3. ----Create new table and insert into table using SELECT INSERT  
  4. SELECT FirstName, LastName  
  5. INTO TestTable  
  6. FROM Person.Contact  
  7. WHERE EmailPromotion = 2  
  8. ----Verify that Data in TestTable  
  9. SELECT FirstName, LastName  
  10. FROM TestTable  
  11. ----Clean Up Database  
  12. DROP TABLE TestTable  
  13. GO  

我也常用它来复制数据结构,但不插入数据.

 

 

  1. USE AdventureWorks    
  2. GO    
  3. ----Create new table and insert into table using SELECT INSERT    
  4. SELECT FirstName, LastName    
  5. INTO TestTable    
  6. FROM Person.Contact    
  7. WHERE 1=2  
  8. DROP TABLE TestTable    
  9. GO    
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值