mysql5.7 DLETE IN You can't specify target table 'table' for update in FROM clause,

mysql5.7以前的操作是,可以正常删除数据

DELETE FROM table1 WHERE id IN (
    SELECT * FROM (
        SELECT id FROM table1 WHERE id < 30
    ) a
)

 

 

mysql5.7的操作需要微调一下,因为mysql5.7的sql优化后又会触发异常,解决方案为:子句增加一个DISTINCT

DELETE FROM table1 WHERE id IN (
    SELECT * FROM (
        SELECT DISTINCT id FROM table1 WHERE id < 30
    ) a
)

 

posted @ 2020-08-17 15:49  Binz  阅读(102)  评论(0编辑  收藏  举报