-- 作者:dbs
-- 发布时间:2010-4-14 8:38:16
-- 删除数据库中重复记录的SQL语句
在几万条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢?可以按照下面的例子进行操作: 表School(或SchoolPro)字段SchoolId,SchoolName。 1、查找表中多余的重复记录,重复记录是根据单个字段(SchoolId)来判断 select * from School where SchoolId in (select SchoolId from School group by SchoolId having count(SchoolId) > 1) 2、删除表中多余的重复记录,重复记录是根据单个字段(SchoolId)来判断,只留有rowid最小的记录 delete from School where SchoolId in (select SchoolId from School group by SchoolId having count(SchoolId) > 1) and rowid not in (select min(rowid) from School group by SchoolId having count(SchoolId )>1) 或者使用:delete from School where SchoolId in (select max(SchoolId) from School group by SchoolId having count(SchoolId) > 1) 3、查找表中多余的重复记录(多个字段) select * from SchoolPro a where (a.SchoolId,a.SchoolName) in (select SchoolId,SchoolName from SchoolPro group by SchoolId,SchoolName having count(*) > 1) 4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录 delete from SchoolPro a where (a.SchoolId,a.SchoolName) in (select SchoolId,SchoolName from SchoolPro group by SchoolId,SchoolName having count(*) > 1) and rowid not in (select min(rowid) from SchoolPro group by SchoolId,SchoolName having count(*)>1) 5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录 select * from SchoolPro a where (a.SchoolId,a.SchoolName) in (select SchoolId,SchoolName from SchoolPro group by SchoolId,SchoolName having count(*) > 1) and rowid not in (select min(rowid) from SchoolPro group by SchoolId,SchoolName having count(*)>1)
|