在实际的开发和使用过程中,我们可能会让用户可以手动的去输入排序的序号。那么此时就可能会导致一个问题。排序列出现重复值会无法处理。或id的排序比较杂乱(如有很多的小数点,或有相同的值等)。
此时,我们只需要采用ROW_NUMBER语法,和一个关联更新即可解决问题。具体代码如下:
update Test set sort=t.sort_index*10 from
Test left join
(select ROW_NUMBER() over(order by sort) sort_index, * from Test) t
on t.id=test.id