Sql 使用序列更新现有记录的最快方法是什么?

Sql 使用序列更新现有记录的最快方法是什么?,sql,sql-server,sql-server-2008,tsql,sql-update,Sql,Sql Server,Sql Server 2008,Tsql,Sql Update,我有一个数据集,有一个主键,一个外键和一个空序列值。基于外键向数据中添加序列号的最快方法是什么 QuestionConditionId是我的主键,QuestionId是外键。这是在QuestionId上使用order by进行选择后数据的外观: 更新后,我的数据应如下所示: 我可以为此编写一个循环,但我希望它更小、更高效。有什么想法吗 WITH T AS (SELECT *, ROW_NUMBER() OVER (PARTITION BY Quest

我有一个数据集,有一个主键,一个外键和一个空序列值。基于外键向数据中添加序列号的最快方法是什么

QuestionConditionId
是我的主键,
QuestionId
是外键。这是在
QuestionId
上使用order by进行选择后数据的外观:

更新后,我的数据应如下所示:

我可以为此编写一个循环,但我希望它更小、更高效。有什么想法吗

WITH T
     AS (SELECT *,
                ROW_NUMBER() OVER (PARTITION BY QuestionId 
                                       ORDER BY QuestionConditionId ) AS RN
         FROM   YourTable)
UPDATE T
SET    Sequence = RN 

但在插入、更新、删除后保持此
序列
列的同步可能会带来更多麻烦。您还可以使用
行编号
选择时进行计算,而不是将其存储。

您在sql server中拥有
行编号
:d完美!正是我想要的