SQL重复记录查询-count与group by having结合查询重复记录

Posted 有梦就能实现

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL重复记录查询-count与group by having结合查询重复记录相关的知识,希望对你有一定的参考价值。

查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
技术分享图片select from people
技术分享图片where peopleId in (select  peopleId  from  people  group  by  peopleId  having  count(peopleId) 1)

 例如:
 select * from testtable
 where numeber in (select number from people group by number having count(number) > 1 )
 可以查出testtable表中number相同的记录
 

例如:

产品参数表rule_product_info 同一个申请单是否有多条记录

用select app_no,count(1) from rule_product_info group by app_no having count(1)>1

 

2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
技术分享图片delete from people 
技术分享图片where peopleId  in (select  peopleId  from people  group  by  peopleId   having  count(peopleId) > 1)
技术分享图片and rowid not in (select min(rowid) from  people  group by peopleId  having count(peopleId )>1)
技术分享图片
技术分享图片3、查找表中多余的重复记录(多个字段) 
技术分享图片select * from vitae a
技术分享图片where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq  having count(*> 1)
技术分享图片
技术分享图片4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
技术分享图片delete from vitae a
技术分享图片where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq having count(*> 1)
技术分享图片and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
技术分享图片
技术分享图片
技术分享图片5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
技术分享图片select * from vitae a
技术分享图片where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq having count(*> 1)
技术分享图片and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

 

(二)
技术分享图片比方说
技术分享图片在A表中存在一个字段“name”,
技术分享图片而且不同记录之间的“name”值有可能会相同,
技术分享图片现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
技术分享图片Select Name,Count(*From A Group By Name Having Count(*1
技术分享图片
技术分享图片如果还查性别也相同大则如下:
技术分享图片Select Name,sex,Count(*From A Group By Name,sex Having Count(*1





























以上是关于SQL重复记录查询-count与group by having结合查询重复记录的主要内容,如果未能解决你的问题,请参考以下文章

sql 单表distinct/多表group by查询去除重复记录

SQL中Distinct和group by性能区别

SQL中Distinct和group by性能区别

sql查询两个字段相同的记录

group by...having count()的问题

如何连接具有不同 GROUP BY 级别的两个查询,使一些记录为空