首頁 >資料庫 >mysql教程 >MySQL實作同時查詢更新同一張表的實例分析

MySQL實作同時查詢更新同一張表的實例分析

黄舟
黄舟原創
2017-09-20 11:23:382280瀏覽

這篇文章主要介紹了MySQL資料庫同時查詢更新同一張表的方法,需要的朋友可以參考下

#在平常的專案中,經常會碰到這樣的問題:我需要在一張標中同時更新查詢出來的資料。例如:有如下圖一張表數據,現在需要更新操作為:把status=1的name值更新為id=2的name值

MySQL實作同時查詢更新同一張表的實例分析

##通常情況下我們會想到如下語句來實現這個需求:

UPDATE tb_testSET NAME = ( SELECT NAME FROM tb_test WHERE id= 2)WHERE `status` = 1

結果卻報錯,報錯資訊為:

You can't specify target table 'tb_test' for update in FROM clause,不能在同一語句中update,select同一張表。不能在同一張表操作,換個思路,如果不是同一張表的話應該就是可以的。於是,可以把select出來的結果當成一個暫時的中間表,從中間表中取得想要的更新相關的資料。於是,上面的更新語句可以更改成下面這樣子:

UPDATE tb_testSET NAME = (select name from ( SELECT NAME FROM tb_test WHERE id = 2) as t)WHERE `status` = 1

這樣就可以完成題目中的操作。經歷的大致過程為:查詢出id=2的資料作為中間表t;set的資料從t表中查詢出來;做更新操作這樣就不是在同一語句中update,select同一張表了,因為這相當與在操作兩張表,tb_test和中間表t。最後的結果如下圖:


MySQL實作同時查詢更新同一張表的實例分析

以上是MySQL實作同時查詢更新同一張表的實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn