1. 程式人生 > 其它 >Debug日記--enroll專案--sql用法:同一個表中根據一行的資料定位修改到另一行中

Debug日記--enroll專案--sql用法:同一個表中根據一行的資料定位修改到另一行中

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的,不要太相信自己的腦子。