oracle 插入数据前去重,Oracle数据去重

一、完全重复数据去重方法

具体思路是,首先创建一个临时表,然后将DISTINCT之后的表数据插入到这个临时表中;然后清空原表数据;再讲临时表中的数据插入到原表中;最后删除临时表。

对于表中完全重复数据去重,可以采用以下SQL语句。

--Code

CREATE TABLE "#temp" AS (SELECTDISTINCT * FROM 表名);   --创建临时表,并把DISTINCT 去重后的数据插入到临时表中

truncate TABLE 表名; --清空原表数据

INSERT INTO 表名 (SELECT * FROM "#temp");   --将临时表数据插入到原表中

DROP TABLE "#temp";  --删除临时表

二、部分数据去重方法

我们可以考虑建立临时表,将需要判断重复的字段、rowid插入临时表中,然后删除的时候在进行比较。

createtable 临时表 as

select a.字段1,a.字段2,MAX(a.ROWID) dataid from 正式表 a GROUPBY a.字段1,a.字段2;

deletefrom 表名 a

where a.rowid!=(

select b.dataid from 临时表 b

where a.字段1=b.字段1 and

a.字段2=b.字段2

);

commit;

实例:思路

1、根据上面的思路操作

2、删除正式表,然后把临时表数据插入到正式表中

-- 根据MAX(a.rowid)筛选重复的数据,获得一张数据不重复的临时表

create table 临时表 as

select a.ip,a.port,MAX(a.ROWID) dataid from ipresult

a GROUP BY a.ip,a.port;

-- 删除正式表中重复数据,只保留最新的一条数据

delete from ipresult a

where a.rowid!=(

select b.dataid from 临时表 b

where a.ip=b.ip and

a.port=b.port

);

--删除临时表并提交

drop table 临时表;

commit;

引用资料:

原文:https://www.cnblogs.com/Dream2hc/p/knowledge575580.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值