mysql更新語句
問題描述
下面的表:p_id是父id,old_id是以前的父id,現(xiàn)在需要把p_id的值改成id比如第一條數(shù)據(jù),之前的父id是10,其實(shí)對應(yīng)的是第二跳記錄,所以更新后,p_id=2更新后的結(jié)果:
這樣的更新語句sql如何寫?需要做的事情:通過p_id找到old_id,這時候的id就是要更新的值;第一條記錄p_id==10,p_id=old_id=10的是第二天記錄,把p_id更新成2
問題解答
回答1:很久沒寫Mysql的查詢操作了,不過我有個想法,對于上面表中的記錄,p_id和old_id是在一張表中,既要做比較操作還要做更新操作。建議:
第一步:根據(jù)主表拆分一張臨時表 tmp_id, old_tmp_id(對應(yīng)主表中的old_id)
tmp_id old_tmp_id
1 30
2 10
3 20
第二步:左連接查詢,where p_id == old_tmp_id, set p_id = tmp_id
回答2:表名test
update test t1 inner join test t2 on t1.p_id = t2.old_idset t1.p_id = t2.id
回答3:一條SQL弄不了,就放在事務(wù)里,更新兩次吧
回答4:
UPDATE test t1INNER JOIN test t2 ON t1.p_id = t2.old_idSET t1.p_id = t2.id
相關(guān)文章:
1. javascript - sublime快鍵鍵問題2. javascript - 移動端上不能實(shí)現(xiàn)拖拽布局嗎?3. 實(shí)現(xiàn)bing搜索工具urlAPI提交4. javascript - 如何判斷不同兩個對象觸發(fā)同一事件?5. ubuntu - apache安裝好后php文件放在哪里?6. javascript - react native在run-android時出現(xiàn)這個錯誤該怎么解決?大神賜教7. angular.js - 單頁應(yīng)用(ng/vue)該如何監(jiān)聽用戶離開當(dāng)前頁面(或者路由)?8. c++ - QWebEngineView加載url后直接點(diǎn)擊鏈接沒有反應(yīng)要怎么解決?9. 前端 - 這段代碼一直生效不了,查半天因?yàn)?top: 0px; 分號后一個隱藏的東西,也不是占位符...刪了就可以生效,這是什么情況。。10. thinkPHP5中獲取數(shù)據(jù)庫數(shù)據(jù)后默認(rèn)選中下拉框的值,傳遞到后臺消失不見。有圖有代碼,希望有人幫忙

網(wǎng)公網(wǎng)安備