查詢表中重復數據
select * from employee where employeeId in (select employeeId from employee group by employeeId having count(employeeId) > 1)
刪除表中多余的重復記錄,重復記錄是根據單個字段(employeeId)來判斷,只留有rowid最小的記錄
delete from employee where employeeId in (select employeeId from employee group by employeeId having count(employeeId) > 1)
and rowid not in (select min(rowid) from employee group by employeeId having count(employeeId )>1)
查找表中多余的重復記錄(多個字段)
select * from employee e
where (e.employeeId,e.phoneNo) in (select employeeId,phoneNo from employee group by employeeId,phoneNo having count(*) > 1)
刪除表中多余的重復記錄(多個字段),只留有rowid最小的記錄
delete from employee e
where (e.employeeId, e.phoneNo) in (select employeeId, phoneNo from employee group by employeeId,phoneNo having count(*) > 1)
and rowid not in (select min(rowid) from employee group by employeeId,phoneNo having count(*)>1)
查找表中多余的重復記錄(多個字段),不包含rowid最小的記錄
select * from employee e
where (e.employeeId,e.phoneNo) in (select employeeId, phoneNo from employee group by employeeId,phoneNo having count(*) > 1)
and rowid not in (select min(rowid) from employee group by employeeId,phoneNo having count(*)>1)
通用:
delete from table t
where (t.字段1, t.字段2, … , t.字段n) in (select 字段1, 字段2, … , 字段n from table group by 字段1, 字段2, … , 字段n having count(*) > 1)
and rowid not in (select min(rowid) from table group by 字段1, 字段2, … , 字段n having count(*)>1)
此外:
如果只是查詢的時候, 不顯示重復, 只需select distinct 字段 from table….
————————————————
版權聲明:本文為CSDN博主「關耳木」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/germoo/article/details/79960480