`

mysql删除重复数据

阅读更多
这里是暂时的做法,不知道有没更简单的做法!

表结构:
mysql> desc t_user;
+----------+------------+------+-----+---------+----------------+
| Field    | Type       | Null | Key | Default | Extra          |
+----------+------------+------+-----+---------+----------------+
| id       | int(11)    | NO   | PRI | NULL    | auto_increment |
| userName | varchar(8) | NO   |     |         |                |
| password | varchar(8) | NO   |     |         |                |
+----------+------------+------+-----+---------+----------------+

删除重复数据之前的数据,这里是名字重复:
mysql> select * from t_user;
+----+----------+----------+
| id | userName | password |
+----+----------+----------+
|  1 | huanglq  | aaaaaa   |
|  2 | assdfdf  | 123      |
|  3 | huanglq  | aaaaaa   |
|  4 | assdfdf  | rtert    |
|  5 | assdfdf  | rtert    |
+----+----------+----------+


在执行之前看看重复数据的id:
mysql> select t1.id from t_user t1,(select username,min(id) as minid from t_user group by username having count(username)>1) t2 where t1.username=t2.username and t1.id<>t2.minid;
+----+
| id |
+----+
|  3 |
|  4 |
|  5 |
+----+

执行删除:
mysql> delete user1 from t_user user1,(select t1.id from t_user t1,(select username,min(id) as minid from t_user group by username having count(username)>1) t2 where t1.username=t2.username and t1.id<>t2.minid) user2 where user1.id=user2.id

查询删除后的数据
mysql> select * from t_user;
+----+----------+----------+
| id | userName | password |
+----+----------+----------+
|  1 | huanglq  | aaaaaa   |
|  2 | assdfdf  | 123      |
+----+----------+----------+
2 rows in set (0.00 sec)
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics