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完美!正是我想要的