2 个回答
DELETE item1 FROM TABLENAME item1, TABLENAME item2
WHERE item1.coding = item2.coding AND item1.country = item2.country AND (...其他条件)
AND item1.id < item2.id

以上是保留ID较大的。
另外,这种最好在业务层就做好校验,处理好重复数据


delete from 表名 where id not in (
    select tmp.mid
    from (
             select min(id) mid
             from 表名
             group by coding, country, ....
         ) tmp
)

delete from abc where id not in (select min(id) from abc group by code, value)
这种sql会报错, 不能再查询表的同时删除表数据, 需要将子查询的结果放到临时表tmp中.

另外还是建议在业务中过滤此类数据为好

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