oracle查询重复数据和删除重复记录示例分享查询重复数据和删除重复记录示例分享
一、查询某个字段重复一、查询某个字段重复
select *
from User u
where u.user_name in (select u.user_name
from User u
group by u.user_name having count(*) > 1)
二,删除表中某几个字段的重复二,删除表中某几个字段的重复
例:表中有条六条记录。 其中张三和王五 的记录有重复
TableA
id customer PhoneNo
001 张三 777777
002 李四 444444
003 王五 555555
004 张三 777777
005 张三 777777
006 王五 555555
如何写一个sql语句将TableA变成如下
001 张三 777777
002 李四 444444
003 王五 555555
测试环境
create table TableA ( id varchar(3),customer varchar(5),PhoneNo varchar(6))
insert into TableA select '001','张三','777777'
union all select '002','李四','444444'
union all select '003','王五','555555'
union all select '004','张三','777777'
union all select '005','张三','777777'
union all select '006','王五','555555'
结果
delete TableA from TableA Twhere
exists(
select 1fromtablea where customer=T.customer and phoneno=T.phoneno
andid < tt.id
)
总结总结
该方法适用于有一个字段为自增性,例如本例中的:id
delete 表名 from 表名 as Twhere
exists(
select 1from表名 where 字段A=T.字段A and 字段B=T.字段B,(....)
and自增列 < T.自增列
)
三,查询并删除重复记录的三,查询并删除重复记录的SQL语句语句
查询及删除重复记录的查询及删除重复记录的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)
评论0
最新资源