sql 查兩個相同數據

--功能概述:刪除重複記錄
--做成時間:2008/10/31

在幾千條記錄裏,存在着些相同的記錄,如何能用SQL語句,刪除掉重複的呢?謝謝! 
1、查找表中多餘的重複記錄,重複記錄是根據單個字段(peopleId)來判斷 
select * from people 
where peopleId in (select  peopleId  from  people  group  by  peopleId  having  count(peopleId) > 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章