2010-04-13 48 views
1

我想写插入2行插入表这样一个SQL脚本:作为使用游标的替代方法,我如何为每个SQL?

INSERT INTO [table1] 
     ([Id] 
     ,[Name] 
     ,[SequenceNo] 
     ,[EntityId]) 
VALUES 
     (<newid(), uniqueidentifier,> 
     ,<'SpecificName1', nvarchar(255),> 
     ,<1, int,> 
     ,</*Here's where I need help*/>) 
INSERT INTO [table1] 
     ([Id] 
     ,[Name] 
     ,[SequenceNo] 
     ,[EntityId]) 
VALUES 
     (<newid(), uniqueidentifier,> 
     ,<'SpecificName2', nvarchar(255),> 
     ,<2, int,> 
     ,</*Here's where I need help*/>) 

“ENTITYID”是一个外键的表我称之为“实体”在这里。

有没有一种方法,我可以将这些行的每一行我已经在“实体”(与各实体的ID列值作为表1的ENTITYID列价值2不使用光标

回答

1

INSERT SELECT应该是你需要的。我不确定你是否需要一个WHERE子句来插入任何相关的实体,但...

编辑:我的第一个答案没有增加每个项目的序列号在实体中使用了ROW_NUMBER方法来做到这一点

INSERT INTO [table1] 
(
    [Id], 
    [Name], 
    [SequenceNo], 
    [EntityId] 
) 
SELECT 
    NEWID(), 
    'SpecificName1', 
    ROW_NUMBER() OVER (ORDER BY EntityId), 
    EntityId 
FROM 
    Entities 
相关问题