在SQL Server 已存在的表中,要Update字段值为排序了的行号,这里要用到开窗函数ROW_NUMBER()。

分两种情况看:

1、全表自动排序:

OrderNum为要更新的排序字段。Id为按照什么顺序重置排序数据。通过执行如下sql语句实现了上面的需求:

update T set OrderNum = rownum from(
        select OrderNum, ROW_NUMBER() over(order by Id) rownum from T_A
    ) T

 

2、带条件的重置排序。

把RoleId=2的所有数据按照id排序,重置OrderNum值。

update T set OrderNum = rownum from(
        select RoleId,OrderNum, ROW_NUMBER() over(order by Id) rownum from T_A where RoleId=2
    ) T where RoleId=2

 

posted on 2022-08-03 15:23  HandsomeFa  阅读(583)  评论(0编辑  收藏  举报