mysql 修改時子查詢的問題


在學習時,我在update語句中子查詢了修改表,報出如下錯誤

You can't specify target table 'beauty' for update in FROM clause

原因是不能子查詢select出同一表中的某些值,再update這個表(在同一語句中)

錯誤案例

 UPDATE beauty SET boyfriend_id =2
WHERE beauty.id IN (SELECT beauty.id id FROM beauty LEFT JOIN boys ON boys.id=beauty.`boyfriend_id` WHERE beauty.`boyfriend_id` IS NULL)

應該寫法

 UPDATE beauty SET boyfriend_id =2 WHERE beauty.id
IN (SELECT b.id FROM
(SELECT beauty.id id FROM beauty LEFT JOIN boys ON boys.id
=beauty.`boyfriend_id`
WHERE beauty.`boyfriend_id` IS NULL)
AS b)

雖然其實可以直接外連接修改。但是誤打誤撞這個問題,記錄一下

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM