mysql在delete删除数据的时候报了“[Err] 1093 - You can't specify target table 'toparticle' for update in FROM clause”这样的错误,报这种mysql错误是mysql特有的,它说不能将Select查询出同一张表的字段进行update更新。
按我们正常的思想,oracle,myssql等数据库都是没有啥问题的,偏偏就mysql会报这种“You can't specify target table 'xxx' for update in FROM clause”错误,小编的sql语句如下所示:
delete from toparticle where top_time in(select min(top_time) from toparticle)
那么该如何解决上述这种错误呢?我们只需要添加一张中间表即可,将上述sql语句改成如下这样:
delete from toparticle where top_time in(select * from (select min(top_time) from toparticle) as tp)
要注意的是:中间表需要改成“select *”的形式,然后“as tp”将“select min(top_time) from toparticle”的结果作为一张别名表来查询即可。
网上的很多资料都是复制粘贴,比较的垃圾,小编也是花了很长时间才解决这样的问题,所以特意作为笔记记录下来。