用一句SQL更新多条记录的序号
- 作者:zhaozj
- 发表时间:2020-12-23 10:40
- 来源:未知
今天碰到一个问题,需要在更新某条记录时,对多个记录的做相应的调整。
涉及的表t1
ID Categories Name SortNum---------------------------------------1 1 CHN 12 1 USA 23 1 RSA 34 2 JPN 1
以此表为例,就是在更新ID为2和3的记录的Categories为2时,同时更新其排序编号SortNum
按最简单直接的想法,就是要更新几条记录就写几个UPDATE语句。但其实可以有更简单的方法:
declare @s intselect @s = count(*) from t1 where Categories = 2update t1set Categories = 2, SortNum = @s, @s = @s + 1where ID in (2, 3)
注意字体加粗的地方,通过这种累加的方式,就得到了一个自增的值,然后赋给SortNum就行了。
另外,这里只给出了解决我最开始提出的问题中的一部分,最后还需要调整原Categories中的排序编号(也就是Categories =1的那些记录的SortNum),与上面的SQL类似,我就不用再唠叨了:)