我有一张这样的桌子
id Bill No Branches_id
1 1 1
2 2 1
3 3 1
4 1 2
5 4 1
用户删除编号为2的帐单时,其他所有记录的bill_no均按数字顺序更新
id Bill No Branches_id
1 1 1
3 2 1
4 1 2
5 3 1
有没有一种简便的方法可以对所有记录进行重新排序而无需以编程方式循环
答案 0 :(得分:1)
看来id
是主键,您想更新每个帐单中的另一列。这可能是合理的。
您可以使用变量:
declare @rn := 0;
update likethis lt
set bill_no = (@rn := @rn + 1)
where lt.branches_id = 1
order by lt.id;
请注意,对该表的所有外部引用都应使用id
。如果使用bill_no
来连接到另一个表,则不要更改该值(即使使用级联外键),除非这种情况很少发生。