Skip to main content
 首页 » 数据库教程 » mysql教程

MySQL查询及删除重复记录的方法 ?

2021年08月11日390百度已收录

  1)找到要删除的数据 然后删除这些数据。具体实现如下, delete users as a from table as a,( select min(id) , name from table group by name having count(name) > 1

) as b where a。

  name = b。name and a。id b。id; 加上 having count(name) > 1 可以避免扫描没有重复的记录,提高效率 2)找到要保留的数据 然后用not in 来删除不再这些数据中的记录。大家很容易就想到如下的sql语句:

delete from users where id not in ( select min(id) from users group by name ); 但是mysql删 除动作不能带有本表的查询动作,意思是你删除users表的东西不能以users表的信息为条件 所以这个语句会报错,执行不了。

  只要通过创建临时表作为查询条件。具体实现如下:

delete from users where id not in ( select * from ( select min(id) from users group by name ) );。

查询 select x,count(*) c from tab having c > 1;

删除 对x 加unique index , 使用 ignore .

用子查询having count(*) > 1的得到要删除的数据即可.

只要能把重复的内容找出来,删除就不是问题了。可以通过select * from dou group by id having count(*) > 1 来完成对重复数据的查找; 之后再delete掉就行了。

下面是我的一个小例子:

create table dou ( id varchar(4), name varchar(8));

insert into dou values ( '123', 'name123'), ( '123', 'name123'), ( '124', 'name123');

select id, name from dou group by id, name having count(*) > 1;

select * from dou group by id having count(*) > 1;

评论列表暂无评论
发表评论
微信