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

Mar*_*ark 6 sql t-sql sql-server sql-server-2008 sql-update

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

QuestionConditionId是我的主键,QuestionId是外键.这是按照订单选择后数据的样子QuestionId:

在此输入图像描述

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

在此输入图像描述

我可以为此写一个循环,但我希望有更小更高效的东西.有任何想法吗?

Mar*_*ith 9

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

但是Sequence在插入,更新,删除之后保持此列同步可能比它的价值更麻烦.您也可以使用时间ROW_NUMBER计算SELECT而不是存储它.