我如何在SQL中作为使用游标的替代方法?

时间:2010-04-13 10:01:39

标签: sql sql-server-2005

我正在尝试编写一个SQL脚本,在表中插入2行:

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”是我在此处称为“实体”的表的外键。

有没有办法可以为“实体”中的每一行插入其中的2行(相应的实体的Id列值作为table1的EntityId列的值而不使用游标

1 个答案:

答案 0 :(得分: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