牛骨文教育服务平台(让学习变的简单)
博文笔记

mysql查询表里的重复数据方法:

创建时间:2017-07-04 投稿人: 浏览次数:734
1 2 3 4 INSERT INTO hk_test(username, passwd) VALUES ("qmf1""qmf1"),("qmf2""qmf11")   delete from hk_test where username="qmf1" and passwd="qmf1"

 

 

MySQL里查询表里的重复数据记录:

先查看重复的原始数据:

场景一:列出username字段有重读的数据

1 2 3 select username,count(*) as count from hk_test group by username having count>1;   SELECT username,count(username) as count FROM hk_test GROUP BY username HAVING count(username) >1 ORDER BY count DESC;

这种方法只是统计了该字段重复对应的具体的个数

 

场景二:列出username字段重复记录的具体指:

1 2 3 4 5 select * from hk_test where username in (select username from hk_test group by username having count(username) > 1)   SELECT username,passwd FROM hk_test WHERE username in ( SELECT username FROM hk_test GROUP BY username HAVING count(username)>1)   但是这条语句在mysql中效率太差,感觉mysql并没有为子查询生成临时表。在数据量大的时候,耗时很长时间

 

解决方法:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 于是使用先建立临时表  复制代码 代码如下:   create table `tmptable` as (  SELECT `name`  FROM `table`  GROUP BY `name` HAVING count(`name`) >1  );    然后使用多表连接查询 复制代码 代码如下:   SELECT a.`id`, a.`name`  FROM `table` a, `tmptable` t  WHERE a.`name` = t.`name`;    结果这次结果很快就出来了。   用 distinct去重复 复制代码 代码如下:   SELECT distinct a.`id`, a.`name`  FROM `table` a, `tmptable` t  WHERE a.`name` = t.`name`;

 

 

场景三:查看两个字段都重复的记录:比如username和passwd两个字段都有重复的记录:

1 2 select * from hk_test a where (a.username,a.passwd) in (select username,passwd from hk_test group by username,passwd having count(*) > 1)

 

场景四:查询表中多个字段同时重复的记录:

1 select username,passwd,count(*) from hk_test group by username,passwd having count(*) > 1

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 MySQL查询表内重复记录   查询及删除重复记录的方法 (一) 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select *  from people where peopleId in (select peopleId from people group by peopleId having count(peopleId)>1)   2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有一个记录 delete from people where peopleId in (select peopleId  from people group by peopleId 
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。