當子查詢作為條件,執行delete跟update操作時,會出現:
Error Code: 1093 You can't specify target table 'x' for update in FROM clause
作一個簡單的示例:
CREATE TABLE tbl_a(
id INT,
NAME VARCHAR(50)
);
INSERT INTO tbl_a VALUES(1, 'leisure');
INSERT INTO tbl_a VALUES(2, 'leisure2');
SELECT * FROM tbl_a;
執行更新操作
UPDATE tbl_a
SET id = (
SELECT id FROM tbl_a
WHERE NAME = 'leisure2'
) WHERE NAME = 'leisure';
這時,如愿見到我們標題上的錯誤,解決方法如下(
橙色字體系關鍵):
UPDATE tbl_a
SET id = (
SELECT id FROM (
SELECT * FROM tbl_a WHERE NAME = 'leisure2'
) xx
)WHERE NAME = 'leisure';