首页 > 代码库 > 删除重复数据,只保留ID最小的一条数据
删除重复数据,只保留ID最小的一条数据
最近遇到一个问题,就是使用的rm_user_department的重复数据过多,需要删除重复数据,在网上找的sql,照着写的基本上运行都有错误,现在将自己写的贴出来给大家看看.
rm_user_department 的表结构如图:
select * from rm_user_department
DELETE FROM rm_user_department --这里不能使用别名,如果使用别名会报错 WHERE ( user_id, dep_id, user_type ) IN ( select a.userID,a.depId,a.user_type from ( -- 这里需要套一层a,如果去掉这个a,会报错: You can‘t specify target table ‘rm_user_department‘ for update in FROM clause SELECT user_id as userID, dep_id as depId, user_type -- COUNT(*) FROM rm_user_department GROUP BY user_id, dep_id, user_type HAVING COUNT(*) > 1 ) a ) AND id NOT IN ( SELECT b.id from ( -- 这里b和上面的a是同理 SELECT MIN(tt.id) AS id FROM rm_user_department tt GROUP BY user_id, dep_id, user_type HAVING COUNT(*) > 1 ) b );
大家使用的时候,只需要将我的代码复制下来,将表名改一下就好啦
删除重复数据,只保留ID最小的一条数据
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。