UPDATE test.tb_vobile a SET a.name = '111' WHERE a.id = (SELECT MAX(id) FROM test.tb_vobile);
報錯:Error 1093: You can't specify target table 'a' for update in FROM clause
MySQL 不允許 UPDATE 目標表同時出現在子查詢的 FROM 子句中。
UPDATE test.tb_vobile a JOIN (SELECT MAX(id) AS id FROM test.tb_vobile) b ON a.id = b.id SET a.name = '123';
UPDATE test.tb_vobile a,
(SELECT MAX(id) AS id FROM test.tb_vobile) b
SET a.name = '321'
WHERE a.id = b.id;
SET/WHERE 子查詢中引用自身。UPDATE ta a, tb b SET a.bid=b.id, b.aid=a.id;UPDATE 後可跟任意查詢(等效 FROM),配合 JOIN 或逗號語法繞過 1093 限制。實務中推薦使用
JOIN寫法,語義清晰、兼容性好、易維護。