oracle删除重复记录,只保留rowid最小的记录
初探oracle删除重复记录,只保留rowid最小的记录
如题,初探oracle删除重复记录,只保留rowid最小的记录(rowid可以反映数据插入到数据库中的顺序)
一、删除重复记录可以使用多种方法,如下只是介绍了两种方法(exist和in两种)。
1.首先创建一个测试表。
create table my_users(
id number,
username varchar2(20),
sal number
)
2.插入测试数据

begin
for i in 1..10 loop
insert into my_users values(i,'carl_zhang',i+10);
end loop;
end; begin
for i in 1..10 loop
insert into my_users values(i,'carl_zhang',i+20);
end loop;
end; insert into my_users values(100,'carl',20.3); commit;

3.查看重复记录

select rowid,rownum,a.* from my_users a
where 1=1
and exists(
select 'exist' from my_users b
where 1=1
and a.id=b.id
and a.username=b.username
having count(*)>1
)
order by rowid

4.查看重复数据中,rowid最大的记录(rowid可以反映数据插入到数据库中的顺序)

select rowid,rownum,a.* from my_users a
where 1=1
and exists(
select 'exist' from my_users b
where 1=1
and a.id=b.id
and a.username=b.username
-- having count(*)>1
having count(*)>1 and a.rowid=max(b.rowid)
)
order by rowid

5.删除重复数据,保留rowid最小的记录

delete from my_users a
where 1=1
and exists(
select 'exist' from my_users b
where 1=1
and a.id=b.id
and a.username=b.username
-- having count(*)>1
having count(*)>1 and a.rowid=max(b.rowid)
)

二、以上方法是通过exist实现,相比in、not in更加的快速。
1.如下,查看重复记录。

select rowid,rownum,a.* from my_users a
where 1=1
and (a.id,a.username) in(
select b.id,b.username from my_users b
where 1=1
having count(*)>1
group by b.id,b.username
)
order by rowid

2.查看重复数据中,rowid最大的记录

select rowid,rownum,a.* from my_users a
where 1=1
and (a.id,a.username,rowid) in(
select b.id,b.username,max(rowid) from my_users b
where 1=1
having count(*)>1
group by b.id,b.username
)
order by rowid

3.删除重复数据,保留rowid最小的记录

delete from my_users a
where 1=1
and (a.id,a.username,rowid) in(
select b.id,b.username,max(rowid) from my_users b
where 1=1
having count(*)>1
group by b.id,b.username
)

oracle删除重复记录,只保留rowid最小的记录的更多相关文章
- 初探oracle删除重复记录,只保留rowid最小的记录
如题,初探oracle删除重复记录,只保留rowid最小的记录(rowid可以反映数据插入到数据库中的顺序) 一.删除重复记录可以使用多种方法,如下只是介绍了两种方法(exist和in两种). 1.首 ...
- oracle删除重复数据只保留一条
-- 如表role_user的数据 ROLEID USERID -- 删除相同记录只剩下一条记录 根据两个字段查询重复数据 (roleid,userid) ) 删除重复数据只保留一条 delete f ...
- Mysql 删除重复数据只保留id最小的
DELETE FROM 表 WHERE id NOT IN ( SELECT id FROM ( SELECT min(b.id) AS id FROM 表 b GROUP BY b.重复字段 ) b ...
- mysql 删除重复数据只保留一条记录
删除重复数据保留name中id最小的记录 delete from order_info where id not in (select id from (select min(id) as id fr ...
- Oracle 删除重复数据只留一条
查询及删除重复记录的SQL语句 1.查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 where Id in (select Id from 表 g ...
- SQL删除重复数据只保留一条
用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select ...
- Oralce中SQL删除重复数据只保留一条(转)
用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 .查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select ...
- MySQL中删除重复数据只保留一条
用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 SELECT ...
- SQL查找 删除重复数据只保留一条
--用SQL语句,删除掉重复项只保留一条 --在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 --1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 ...
随机推荐
- 说说PHP的autoLoad自动加载机制
__autoload的使用方法1: 最经常使用的就是这种方法,根据类名,找出类文件,然后require_one 复制代码 代码如下:function __autoload($class_name) { ...
- 分布式服务框架 dubbo/dubbox 入门示例(转)
dubbo是一个分布式的服务架构,可直接用于生产环境作为SOA服务框架. 官网首页:http://dubbo.io/ ,官方用户指南 http://dubbo.io/User+Guide-zh.htm ...
- paip.jdk1.4 1.5(5.0) 1.6(6.0) 7.0 8.0特点比较与不同
paip.jdk1.4 1.5(5.0) 1.6(6.0) 7.0 8.0特点比较与不同 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地 ...
- Base64编码和解码
Base64这是一个二进制编码方法转换成可打印字符.主要用于邮件传输. Base64将64人物(A-Z,a-z,0-9,+,/)由于基本字符集.把所有的符号转换成字符集. 编码: 编码每次3节转为4字 ...
- Cocos观察者设计模式和通报机制
观察员(Observer)模式也称为公告/订阅(Publish/Subscribe)模式.这是 MVC( 模型-视图-控制器)模型的重要组成部分.天气一直讨论的英国最喜欢的话题,近期天气变化几年已成为 ...
- Android中部署自己的su
本人博客原文 首先把你的自己的su的放到Android应用程序project的assets文件夹,为了和系统的su区分,我自己的su文件叫做sur. 另外我这里没有考虑x86架构的cpu的手机. 废话 ...
- .NET反编译之Reflector
.NET反编译之Reflector 这几日由于公司需要, 看了些.NET反编译技巧,特地和大家分享下 .NET反编译工具很多,Reflector是其中一个很优秀的工具,所以就用它来进行反编译工作了.今 ...
- java+js实现完整的图片展示本地目录demo
java+js实现完整的图片展示本地目录demo 最近的项目满足需要,实现通过一个前端button点击事件,流行音乐浏览下的全部图片: 思路: - 获取到所需展示图片的本地目录内全部图片的文件绝对路径 ...
- MVC中使用SignalR
MVC中使用SignalR打造酷炫实用的即时通讯功能附源码 前言,现在这世道写篇帖子没个前言真不好意思发出来.本贴的主要内容来自于本人在之前项目中所开发的一个小功能,用于OA中的即时通讯.由于当时 ...
- 把自解压的RAR压缩包解压到指定的软件安装目录
原文 把自解压的RAR压缩包解压到指定的软件安装目录 今天千里独行同学给轻狂来信问了一个问题:如何把一个自解压的RAR压缩包解压到我们指定的软件安装目录. 其实,在NSIS中,我们可以灵活运用相关 ...