用一句SQL更新多条记录的序号

今天碰到一个问题,需要在更新某条记录时,对多个记录的做相应的调整。

涉及的表t1

ID         Categories         Name       SortNum
---------------------------------------
1            1            CHN            1
2            1             USA            2
3            1             RSA           3
4            2             JPN           1

以此表为例,就是在更新ID为2和3的记录的Categories为2时,同时更新其排序编号SortNum

按最简单直接的想法,就是要更新几条记录就写几个UPDATE语句。但其实可以有更简单的方法:

declare @s int
select @s = count(*) from t1 where Categories = 2

update t1
set Categories = 2, SortNum = @s, @s = @s + 1
where ID in (2, 3)

注意字体加粗的地方,通过这种累加的方式,就得到了一个自增的值,然后赋给SortNum就行了。

另外,这里只给出了解决我最开始提出的问题中的一部分,最后还需要调整原Categories中的排序编号(也就是Categories =1的那些记录的SortNum),与上面的SQL类似,我就不用再唠叨了:)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值