ERROR 1093 (HY000): You can't specify target table 'C' for update in FROM clause

2950 ワード

参考ブログ:https://blog.csdn.net/priestmoon/article/details/8016121
delete from c where aID in (select a.aID from a,b,c where a.aID = c.aID and c.bID = b.bID and a.name = "abc" and b.name != "abc");

誤報
ERROR 1093 (HY000): You can't specify target table 'c' for update in FROM clause

つまり、検索時にbテーブルを使用できない、削除時にbテーブルの内容を削除すると、データの不一致を招く可能性があるということです.
このような場合は、一時的なテーブルを借りて、見つけたものを保存する必要があります.
delete from c where aID in (select tmp.aID from (select a.aID from a,b,c where a.aID = c.aID and c.bID = b.bID and a.name = "abc" and b.name != "abc")tmp);

テンポラリテーブルはtmpです