mysql-查询删除重复数据

最近因为生产上的代码问题,导致数据库表中的数据存在多条一样的数据,代码修复后需要对这些脏数据进行删除。如下表A(三条重复数据):

ID NAME AGE MOBILE
1 张三 28 130021102xx
2 张三 28 130021102xx
3 张三 28 130021102xx
4 李四 19 159000011xx
5 李四 19 159000011xx

 

 

 

 

 

1、通过SQL语句查询出重复数据:

SELECT NAME FROM A GROUP BY NAME HAVING COUNT(NAME)>1;

 

2、删除掉重复行数据,保留一条:

DELETE FROM A WHERE NAME IN (SELECT NAME FROM (SELECT NAME FROM A GROUP BY NAME HAVING COUNT(*)>1) aa)

AND ID NOT IN (SELECT ID FROM (SELECT MIN(ID) ID FROM A GROUP BY NAME HAVING COUNT(*)>1) bb);

注意:2中的sql表别名是必须的,不用别名的话会报错。原因没有去细究。

 

posted @ 2018-04-03 22:42  墨林2015  阅读(152)  评论(0编辑  收藏  举报