【问题标题】:What is the fastest way to update existing records with a sequence?用序列更新现有记录的最快方法是什么?
【发布时间】:2013-01-02 04:45:04
【问题描述】:

我有一个包含主键、外键和空序列值的数据集。根据外键向数据添加序列号的最快方法是什么?

QuestionConditionId 是我的主键,QuestionId 是外键。这是在QuestionId上按顺序选择后数据的样子:

更新后我的数据应该是这样的:

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

【问题讨论】:

  • 你很幸运在 sql server 中拥有row_number :D

标签: sql sql-server sql-server-2008 tsql sql-update


【解决方案1】:
WITH T
     AS (SELECT *,
                ROW_NUMBER() OVER (PARTITION BY QuestionId 
                                       ORDER BY QuestionConditionId ) AS RN
         FROM   YourTable)
UPDATE T
SET    Sequence = RN 

但是在插入、更新、删除之后保持这个Sequence 列同步可能比它的价值更麻烦。您也可以使用ROW_NUMBERSELECT 时间计算而不是存储它。

【讨论】:

  • 完美!正是我想要的
猜你喜欢
  • 1970-01-01
  • 2021-10-05
  • 2015-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-28
相关资源
最近更新 更多