oracle删除重复数据并至少保留一条(大数据操作) 您所在的位置:网站首页 oracle去除重复数据中的一条数据 oracle删除重复数据并至少保留一条(大数据操作)

oracle删除重复数据并至少保留一条(大数据操作)

2024-07-15 16:21| 来源: 网络整理| 查看: 265

1. 前言

有时候会遇到这样的问题,一个表中有重复数据,并且数据量比较大,在一万条以上。这个时候如果用delete删除重复数据并保留一条的时候会非常之慢,数据库直接卡死。

这个时候可以通过创建临时表来进行重复数据的筛选,然后删除原来的数据,把临时的表数据再移到数据库的表中。自己测试这种方法十几万的数据量不到1分钟就可以完成。

2. 开始       2.1 创建临时表

 伪语法:

CREATE TABLE TEMP_DELETE_ORDER_INFO AS

(

查找重复的数据并只显示一条

union all

查找不重复的数据

)

 SQL 案例:

CREATE TABLE TEMP_DELETE_ORDER_INFO AS ( --id重复的数据 select T1.* from ORDER_INFO T1 where T1.id in (select id from ORDER_INFO group by id having count(id) >1) AND T1.ROWID NOT IN (SELECT MIN(ROWID) FROM ORDER_INFO GROUP BY id HAVING COUNT(*) > 1) --将数据连起来 union all --id不重复的数据 select T2.* from ORDER_INFO T2 where T2.id in (select id from ORDER_INFO group by id having count(id) =1) ); 2.2 清空原来的表 truncate TABLE ORDER_INFO; 2.3 将临时表的数据导入到原来的表中

 

insert into ORDER_INFO select * from TEMP_DELETE_ORDER_INFO; 2.4 删除临时表 DROP TABLE TEMP_DELETE_ORDER_INFO; 3. 结尾

创建临时表查找重复数据和不重复数据需要根据自己的需求,我这个是根据id重复来查找的。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有