Oracle 查询/删除重复记录
2014-04-18 23:26
281 查看
假设订单表tbl_order存在重复的记录:
一.查找表中存在重复的记录
1.单个字段存在重复的情况
1 001
订单1
2 002 订单2
3 002 订单2
4 001 订单1
2.多个字段存在重复的情况:
二.删除表中存在重复的记录
1.子查询方式
结果:
1 001
订单1
2 002 订单2
5 003 订单3
解释:第一个子查询查询出所有重复的记录,第二个子查询查出所有重复记录中最小的ROWID的记录,整个语句的作用是删除多条重复记录但保留一条ROWID最小的。
2.临时表方式
一.查找表中存在重复的记录
1.单个字段存在重复的情况
select * from tbl_order t where t.order_no in (select t.order_no from tbl_order t group by t.order_no having count(*) > 1)结果:
1 001
订单1
2 002 订单2
3 002 订单2
4 001 订单1
2.多个字段存在重复的情况:
select * from tbl_order t where (t.order_no,t.order_desc) in (select t.order_no,t.order_desc from tbl_order t group by t.order_no,t.order_desc having count(*) > 1)
二.删除表中存在重复的记录
1.子查询方式
delete from tbl_order t where (t.order_no,t.order_desc) in (select t.order_no,t.order_desc from tbl_order t group by t.order_no,t.order_desc having count(*) > 1) and ROWID not in (select MIN(ROWID) from tbl_order t group by t.order_no,t.order_desc having count(*) > 1)
结果:
1 001
订单1
2 002 订单2
5 003 订单3
解释:第一个子查询查询出所有重复的记录,第二个子查询查出所有重复记录中最小的ROWID的记录,整个语句的作用是删除多条重复记录但保留一条ROWID最小的。
2.临时表方式
create table tmp as select distinct * from tbl_order; truncate table tbl_order; insert into tbl_order select * from tmp;
相关文章推荐
- Oracle查询重复数据与删除重复记录方法
- oracle查询重复数据和删除重复记录示例分享
- Oracle查询重复数据与删除重复记录方法
- Oracle 查询并删除重复记录的SQL语句
- Oracle查询重复数据并删除,只保留一条记录
- Oracle查询重复数据并删除,只保留一条记录
- oracle查询重复数据与删除重复记录方法
- Oracle 查询并删除重复记录的SQL语句
- 如何使用Oracle查询并删除重复记录的SQL语句
- ORACLE查询删除重复记录
- Oracle 查询及删除重复记录的方法大全
- Oracle查询重复数据与删除重复记录
- Oracle 查询并删除重复记录的SQL语句
- Oracle 查询并删除重复记录的SQL语句
- Oracle 删除重复数据只留一条 查询及删除重复记录的SQL语句 1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 wher
- Oracle 查询并删除重复记录的SQL语句
- ORACLE查询删除重复记录三种方法
- Oracle查询重复数据与删除重复记录方法
- oracle查询重复数据与删除重复记录方法
- Oracle 查询并删除重复记录的SQL语句