博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle删除重复记录,只保留一条
阅读量:6306 次
发布时间:2019-06-22

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

hot3.png

create table AA_TEST

(
  aaaa NVARCHAR2(20),
  bbbb NUMBER,
  cccc NVARCHAR2(20)
)

删除分两步:先保存满足要求的

delete from aa_test t where (t.aaaa,t.bbbb) not in (

select t1.aaaa,max(t1.bbbb) from aa_test t1 group by t1.aaaa

);

第二步再在第一步基础上删去重复记录

delete from aa_test t where rowid not in(
select min(rowid) from aa_test t1 where t.aaaa = t1.aaaa and t.bbbb = t1.bbbb

);

第二种方式 ,使用开窗函数

delete from AA_TEST where rowid in

(
  select rowid from
  (
         select t.aaaa,t.bbbb,rowid, row_number() over(partition by t.aaaa order by t.bbbb desc) as cccc from AA_TEST t
  )c
  where c.cccc > 1
)

备注:

row_number()要配合over(order by xxx)进行使用,row_number()从1开始,为每一条分组记录返回一个数字

转载于:https://my.oschina.net/u/1582930/blog/402473

你可能感兴趣的文章
ORA-6550;6510
查看>>
dump备份命令
查看>>
使用FastDFS搭建图片服务器单实例篇
查看>>
ip路由选择
查看>>
Model-View-ViewModel for iOS
查看>>
16.Centos7文件类型
查看>>
用得上的网络命令
查看>>
LAMP平台编译安装
查看>>
php 压缩zip
查看>>
tar增量备份
查看>>
PHP系列(五)PHP字符串处理
查看>>
EXAM-1试题及答案详解
查看>>
NFS介绍、NFS服务端安装配置、NFS配置选项介绍
查看>>
rsyslog+loganalyzer 非常强大的日志系统
查看>>
SQL Server2008附加数据库之后显示为只读时解决方法
查看>>
Crontab在CentOS下的使用简介
查看>>
unix shell中(),[]和[[]]的区别
查看>>
盘点购物分享系统,有兴趣的来看看哦
查看>>
H5 Canvas 地图栅格相关资料
查看>>
hal.dll丢失
查看>>