【Oracle】【11】删除重复数据只留一条

正文:

1,根据单个字段(id)查找表中是否有重复记录
select * from table t where t.id in (select t.id from table t group by t.id having count(t.id) > 1);

select * from (select t.id, count(1) count from table t group by t.id) t where t.count != 1;
 
2,根据单个字段(id),删除重复的数据,只留下rowid最小的记录
delete from table t 
where t.id in( select t.id from table t group by t.id having count(t.id) > 1) 
and rowid not in (select min(rowid ) from table t group by t.id having count(t.id) > 1);
 
3,根据多个字段(id, name)查找表中是否有重复记录
select * from table t where (t.id, t.name) in (select t.id, t.name from table t group by t.id, t.name having count(1) > 1)
 
4,根据多个字段(id, name),删除重复的数据,只留下rowid最小的记录
delete from table t 
where (t.id, t.name) in( select t.id, t.name from table t group by t.id, t.name having count(1) > 1) 
and rowid not in (select min(rowid) from table t group by t.id, t.name having count(1) > 1);
 

参考博客:

Oracle 删除重复数据只留一条 - 张曾人 - 博客园
http://www.cnblogs.com/252e/archive/2012/09/13/2682817.html

转载于:https://www.cnblogs.com/huashengweilong/p/10810662.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值