2010-04-13 58 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 
相關問題