mysql 1093 - You can't specify target table 'xx表' for update in FROM clause

爲了修復節點表某批次數據的用戶數據,作出瞭如下嘗試:
UPDATE zs_work_approval_node SET uid = 4963, name = '蘇暢' WHERE id IN (SELECT id FROM zs_work_approval_node  WHERE uid = 4967 AND STATUS IN (0, 1, 4));
執行:[Err] 1093 - You can't specify target table 'zs_work_approval_node' for update in FROM clause

百度查詢提示得知:

 update語句中包含的子查詢的表和update的表爲同一張表時,報錯:1093-You can’t specify target table for update in FROM clausenode

 mysql不容許update目標表和子查詢裏面的表爲同一張表mysql

 解決辦法: 利用子查詢sql能夠改變雙層的子查詢,便可執行成功  (但性能較差,僅僅適合較小的數據量的)sql

UPDATE zs_work_approval_node SET uid = 4963, name = '蘇暢' WHERE id IN (SELECT * FROM ( SELECT m.id FROM zs_work_approval_node m WHERE uid = 4967 AND STATUS IN (0, 1, 4)) AS temp);
相關文章
相關標籤/搜索