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 clause

 mysql不允許update目標表和子查詢里面的表為同一張表

 解決辦法: 利用子查詢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);


免責聲明!

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



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