在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