SQL插入使用select返回多个身份?

Ume*_*mer 12 sql-server lastinsertid sql-server-2008

我使用选择插入到表中

INSERT california_authors (au_id, au_lname, au_fname)
SELECT au_id, au_lname, au_fname
FROM authors
WHERE State = 'CA'
Run Code Online (Sandbox Code Playgroud)

说我有一个标识栏california_authors.我可以通过上面的特定插入插入所有ID,就像我最后可以得到@@ IDENTITY一样single insertion吗?

我不能使用select命令,california_authors因为可能存在先前插入的带过滤器的记录State = 'CA'

Mik*_*son 27

您可以使用output子句.

如果您的标识列被命名为"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'
Run Code Online (Sandbox Code Playgroud)

您可以使用将id插入表中output ... into.
这是一个将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'
Run Code Online (Sandbox Code Playgroud)