Debug日記--enroll專案--sql用法:同一個表中根據一行的資料定位修改到另一行中
阿新 • • 發佈:2021-10-20
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的,不要太相信自己的腦子。