在學習時,我在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)
雖然其實可以直接外連接修改。但是誤打誤撞這個問題,記錄一下