博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
删除表中重复数据的四种方法(oracle)
阅读量:6906 次
发布时间:2019-06-27

本文共 1263 字,大约阅读时间需要 4 分钟。

hot3.png

第一种:新建表,需停业务

select distinct * from t2;
create table t3 as select * from t2;
create table tmp_t3 as select distinct * from t3;
select * from tmp_t3;
drop table t3;
alter table tmp_t3 rename to t3;
select * from t3;

第二种:用rowid

select rowid,c1,c2 from t2;
delete from t2
    where rowid <> ( select min(rowid)
                     from t2 b
                     where b.c1 = t2.c1
                       and b.c2 = t2.c2 );

第三种:用rowid + group by

delete from T2
    where rowid not in (select min(rowid)
    from t2 group by c1,c2 );

--rowid>最小的

delete from t2
    where rowid > ( select min(rowid)
                     from t2 b
                     where b.c1 = t2.c1
                       and b.c2 = t2.c2 )
-- not exists
delete from t2 
where not exists (select 1 from (select min(rowid) rid from t2 group by c1,c2) b where b.rid=t2.rowid);

第四种:用分析函数

select c1,c2,rowid rd,row_number() over(partition by c1,c2 order by c1) rn from t2;

select b.c1,b.c2 from 

    (select c1,c2,rowid rd,row_number() over(partition by c1,c2 order by c1) rn 
     from t2) b 
where b.rn = 1;

delete from t2 where rowid in 

(select b.rd from 
(select rowid rd,row_number() over(partition by c1,c2 order by c1) rn 
from t2) b 
where b.rn > 1);
或者
delete from t2 where rowid not in 
(select b.rd from 
(select rowid rd,row_number() over(partition by c1,c2 order by c1) rn 
from t2) b 
where b.rn = 1);

转载于:https://my.oschina.net/u/3705048/blog/1557563

你可能感兴趣的文章
Mac 终端使用 - 加密 1. MD5 2.Base64
查看>>
【热门技术】解决Win7 下面很多软件安装不兼容的问题
查看>>
【Android】选项卡使用
查看>>
C#基础解析之Ⅰ【前言】
查看>>
CoordinatorLayout滑动抖动问题
查看>>
算法模板——线性欧拉函数
查看>>
价值观
查看>>
Mock.js——数据模板定义
查看>>
vue单页面应用在iOS版微信下自定义分享的问题
查看>>
【BZOJ】1455 罗马游戏
查看>>
python 的urlparse学习
查看>>
vmtouch命令 -
查看>>
spring boot 实际应用(一) 内置tomcat 实现JMX配置
查看>>
MacOS X APK 最新版本 反编译
查看>>
SharePOint 2010 Mysettings 不能编辑用户信息
查看>>
Spring Boot打包部署和环境配置
查看>>
javascript基本语法总结
查看>>
【算法学习笔记】22.算法设计初步 二分查找 上下界判断
查看>>
451. 根据字符出现频率排序
查看>>
网易面试题:和为n连续正数序列
查看>>