将多行默认值插入表中

sil*_*vis 13 t-sql sql-server

我有一个包含单列的表,这是一个自动生成的标识

create table SingleIdTable (
   id int identity(1,1) not null
)
Run Code Online (Sandbox Code Playgroud)

我可以使用自动生成的id插入一行:

insert into SingleIdTable default values
Run Code Online (Sandbox Code Playgroud)

我想插入许多行并使用输出语法来获取它们的ID,例如:

insert into SingleIdTable
output inserted.Id into @TableOfIds
    select (default values) from SomeOtherTable where Attribute is null
Run Code Online (Sandbox Code Playgroud)

凡意图是将行插入SingleIdTable在每行SomeOtherTable,其中Attribute为null使用自动生成的ID.以上不起作用,但我怎么能这样做.我注意到,如果我的表不仅仅有一个列我可以做到,但我不能选择空行,这是我真正想要做的.

我无法改变定义SomeOtherTable.

Mar*_*ith 23

如果您可以使用SQL Server 2008+ MERGE.示例语法如下.

MERGE INTO SingleIdTable
USING (SELECT *
       FROM   SomeOtherTable
       WHERE  Attribute IS NULL) T
ON 1 = 0
WHEN NOT MATCHED THEN
  INSERT
  DEFAULT VALUES
OUTPUT INSERTED.id; 
Run Code Online (Sandbox Code Playgroud)

我不确定这个单列表有什么实际用途吗?