mysql 删除重复记录出错?

语句:

DELETE FROM price_monitor  WHERE EXISTS (SELECT 1 FROM price_monitor b WHERE b.domain = price_monitor.domain );

报错:

#1093 - You can't specify target table 'price_monitor' for update in FROM clause

该如何解决呢?

阅读 2k
3 个回答
DELETE FROM price_monitor WHERE id NOT IN (
    SELECT * FROM (
        SELECT MAX(id) FROM price_monitor  GROUP BY domain
    )
    as tmp
)

根据你的表字段替换上面的id。 如果要保留id最小的数据, 就把MAX(ID)改成MIN(id)

你这个是感觉什么来判断是重复记录的,如果是根据某个字段的话,可以给字段加唯一索引,这样在生成记录时控制比较好。

MySQL不允许在进行子查询的同时删除原表数据

delete a from price_monitor a , (select min(id) as ms ,domain from price_monitor group by domain having count(*)>1) b where a.domain=b.domain and a.id>b.ms

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题