我有一个单列的表,这是一个自动生成的标识
create table SingleIdTable ( id int identity(1,1) not null )
insert into SingleIdTable default values
insert into SingleIdTable output inserted.Id into @TableOfIds select (default values) from SomeOtherTable where Attribute is null
其中意图是在SomeOtherTable中的每一行的SingleIdTable中插入一行,其中Attribute为null,使用自动生成的id.以上是不行的,但我该怎么办呢.我注意到,如果我的桌子不仅仅是一列,我可以做到,但是我不能选择空行,这是我真正想要做的.
我不能更改SomeOtherTable的定义.
解决方法
如果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;
我不知道这个单列表有什么实际用途?