1. 程式人生 > >SELECT查詢結果集INSERT到數據表

SELECT查詢結果集INSERT到數據表

華盛頓 sel fff tro address 存在 插入 提取 語句

簡介

將查詢語句查詢的結果集作為數據插入到數據表中。

一、通過INSERT SELECT語句形式向表中添加數據

例如,創建一張新表AddressList來存儲班級學生的通訊錄信息,然後這些信息恰好存在學生表中,則可以從學生表中提取相關的數據插入建好的AddressList表中。

T-SQL語句如下:

insert into AddressList(姓名,地址,郵箱)
select name,address,email 
from Students

語法快記:該語句和常規的插入語句語法很相似,為了更好的記住語法,即可理解此插入語句把values替換成了查詢語句。

使用該語句插入數據的註意事項:

  1.查詢語句部分其中列的個數、順序、數據類型必須與INSERT語句的指定列要保持一致,列名可以不相同。

  2.INSERT語句插入數據的表必須是預先創建好的。

INSERT SELECT語句形式中的查詢部分不僅可以是單表,可以支持不同形式的查詢語句,只要保證查詢結果集的列和要插入數據的列是匹配的即可。

1.聯接查詢作為數據

insert into AddressList (name,address)
select a.UserName,b.address from SYSTEM_Users a
inner join BASE_Customer b on a.code=b.code

2.UNION合並多個結果集作為數據

insert into AddressList(name,address)
select 張三,洛杉磯 
union
select 李四,舊金山 
union
select 王五,華盛頓 

3.數據來自其他數據庫(跨數據庫插入) 

insert into StudentInfo(name)
select lxr FROM AgroDB.dbo.BASE_Customer

二、通過SELECT INTO語句形式將查詢結果集的數據添加到新數據表

SELECT INTO語句形式的插入方式和INSERT INTO 語句形式插入方式有相同處和不同處。

相同:它們插入的數據都是來自SELECT查詢結果集

不同:INSERT INTO 語句形式插入的數據表必須是預先創建,SELECT INTO語句形式的插入的數據表是在執行該語句時新創建的。

T-SQL語句如下:

select  name,address,email
into AddressList
from  Students

語法快記:整體結構就是查詢語句的結構,即在from關鍵字之上指派了INTO關鍵字加新數據表名。

語句執行邏輯:

  1.創建新數據表,新表的數據結構來自於查詢語句指定的列。

  2.將查詢結果集的信息插入到新表中,只會插入SELECT 中指派的列,列可以指定部分也可以全部。

SELECT INTO語句形式會執行插入數據和創建表兩種命令,這樣會延伸到一個新問題:如何給新表中指定一個標識列?

因為標識列的數據是自增的,因此我們可以在SELECT INTO語句中加入標識列的創建,語法如下:

select IDENTITY(int,1,1) as Aid ,Students.name,Students.address,Students.email
into AddressList
from Students

SELECT查詢結果集INSERT到數據表