SQL重复记录查询-count与group by having结合查询重复记录
查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people
select * from people where peopleId in (select  peopleId  from  people  group  by  peopleId  having  count(peopleId) > 1)
where peopleId in (select  peopleId  from  people  group  by  peopleId  having  count(peopleId) > 1)
例如:
产品参数表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
delete from people  where peopleId  in (select  peopleId  from people  group  by  peopleId   having  count(peopleId) > 1)
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)
and rowid not in (select min(rowid) from  people  group by peopleId  having count(peopleId )>1)
 3、查找表中多余的重复记录(多个字段)
3、查找表中多余的重复记录(多个字段)  select * from vitae a
select * from vitae a where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq  having count(*) > 1)
where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq  having count(*) > 1)
 4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录 delete from vitae a
delete from vitae a where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
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)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

 5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录 select * from vitae a
select * from vitae a where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
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)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
(二) 比方说
比方说 在A表中存在一个字段“name”,
在A表中存在一个字段“name”, 而且不同记录之间的“name”值有可能会相同,
而且不同记录之间的“name”值有可能会相同, 现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项; Select Name,Count(*) From A Group By Name Having Count(*) > 1
Select Name,Count(*) From A Group By Name Having Count(*) > 1
 如果还查性别也相同大则如下:
如果还查性别也相同大则如下: Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号