删除“ Sortkey”中的某些“ sortkey”后,如何对sql排序并更新“ SortKey”

时间:2019-07-07 17:09:57

标签: sql-server vb.net

如果SortKey“ 3”中的“ simon”和SortKey“ 5”中的“ josef”完成并退出,那么ID号3、5会保留。

但排序键已删除

我要在SortKey中与新成员一起重建并保持工作状态

表名称:TblMaster 示例字段:

-----------------------
ID    SortKey   Name
-----------------------
1-       1      john
2-       2      steve
3-       3      simon
4-       4      onil
5-       5      josef
6-       6      mohamed
7-       7      ebraham
-----------------------

需要像

一样进行更改
-----------------------
ID      SortKey     Name
-----------------------
1-       1      john
2-       2      steve
3-              simon
4-       3      onil
5-              josef
6-       4      mohamed
7-       5      ebraham
-----------------------

我们谈论5000名员工 如何使用新排序的

更新所有SortKey

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

也许一种方法是两次更新。首先我们将相应的SortKey's设为NULL,然后通过Row_Number()创建新密钥(不包括NULL SortKey's

示例

Update YourTable set SortKey=null where ID in (3,5)  -- Or whatever desired condition

;with cte as (
     Select *
            ,NewKey = Row_Number() over (Order By SortKey) 
      From  YourTable
      Where SortKey is not null
)
Update cte Set SortKey=NewKey

更新后的表格

ID  SortKey Name
1   1       john
2   2       steve
3   NULL    simon
4   3       onil
5   NULL    josef
6   4       mohamed
7   5       ebraham