sql如何将同一个表中根据一行的数据定位修改到另一行中
今天项目遇到了bug,补救时需要进行 在同一个表中字段user_id相同的几行之间进行数据更新,在自己尝试了嵌套查询后好像不能解决到问题,在网上学习到了,可以用给同一个表起不同别名的方法,然后用类似于联表的方式来定位到两行目标的数据行
实现代码
update process p1 , process p2
set p1.next_id = p2.id
where
p1.user_id = p2.user_id
and p1.stage_id = 2
and p2.stage_id = 3
and p1.next_id = -1
这里的情况是,在这个项目中,process过程表next_id字段为-1表示没有下一过程,如果有下一过程的话就是下一个过程的id,但是因为程序bug导致生成下一阶段时没有修改到,就发生了 在同一user_id下当前过程的还是-1而还是有下一过程的情况
此时要将下一个过程的id赋值回本过程的next_id字段里,就上用到上面那种方法完成。
这次bug也是扩展一个新功能而出现的一个bug ,current_status = 1 把新加入的特色情况耶过滤掉了
实践说明还是要多做测试,不然是找不到这个bug的,不要太相信自己的脑子。