如何去掉数据库重复记录并且只保留一条记录
2017-06-05 22:40
295 查看
在n条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复并保留一条呢?方法如下:
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
[sql] view
plain copy
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
[sql] view
plain copy
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、查找表中多余的重复记录(多个字段)
[sql] view
plain copy
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
[sql] view
plain copy
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最小的记录
[sql] view
plain copy
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)
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
[sql] view
plain copy
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
[sql] view
plain copy
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、查找表中多余的重复记录(多个字段)
[sql] view
plain copy
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
[sql] view
plain copy
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最小的记录
[sql] view
plain copy
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)
相关文章推荐
- 如何去掉数据库重复记录并且只保留一条记录
- 如何去掉数据库重复记录并且只保留一条记录
- 如何去掉数据库重复记录并且只保留一条记录
- 字段查找如何去掉数据库重复记录并且只保留一条记录
- 去除数据库重复的保留一条记录,其他不改变
- 如何删除表中的重复记录只保留其中一条
- 、去掉重复记录 保留一条
- 如何删除表中的重复记录只保留其中一条?
- 数据库表中有重复记录,如何删除这些重复记录保留ID最大的一个信息
- 如何使用SQL删除某个字段重复的记录,保留其中一条
- 如何删除表中的重复记录只保留其中一条?
- 转 如何删除表中的重复记录只保留其中一条
- 如何删除表中的重复记录只保留其中一条
- 如何删除表中的重复记录只保留其中一条?
- 如何删除表中的重复记录只保留其中一条
- 如何删除重复记录,并且剩下一条?
- 删除数据库中重复的记录(保留一条)-oracle、mysql版
- Sqlserver 2000 数据库表中删除重复记录(仅保留一条)
- 如何删除表中的重复记录只保留其中一条?
- 如何删除表中的重复记录只保留其中一条?