2012-01-24 46 views
12

我insertnig到表使用選擇可以使用select來插入SQL返回多個身份?

INSERT california_authors (au_id, au_lname, au_fname) 
SELECT au_id, au_lname, au_fname 
FROM authors 
WHERE State = 'CA' 

說我在california_authors有一個標識列。我可以通過上述特定插入插入所有ID嗎?就像我可以獲得最後single insertion的@@ IDENTITY一樣?

,因爲可能存在先前插入記錄與過濾State = 'CA'

回答

27

可以使用output條款我不能爲california_authors使用select命令。

像這樣的東西,如果你的標識列被命名爲'IdentityCol'將返回你的id作爲結果集。

INSERT california_authors (au_id, au_lname, au_fname) 
OUTPUT inserted.IdentityCol 
SELECT au_id, au_lname, au_fname 
FROM authors 
WHERE State = 'CA' 

您可以使用output ... into將ID插入表中。
下面是一個將id存儲在表變量中的示例。

declare @IDs table (id int) 

INSERT california_authors (au_id, au_lname, au_fname) 
OUTPUT inserted.IdentityCol INTO @IDs 
SELECT au_id, au_lname, au_fname 
FROM authors 
WHERE State = 'CA' 
+0

這真棒....謝謝。 – Umer