博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ORACLE查询删除重复记录三种方法
阅读量:5073 次
发布时间:2019-06-12

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

本文列举了3种删除重复记录的方法,分别是rowid、group by和distinct,小伙伴们可以参考一下。

1.用rowid方法

在ORACLE数据库的内部,每一表都有一rowid伪列,行标识惟一标识行,提供对特殊行的快速存取。对该列使用最大(max)或者最小(min)函数可以非常容易地确定重复的行。

据据oracle带的rowid属性,进行判断,是否存在重复,语句如下:

查数据:

select * from table1 a where rowid !=(select max(rowid)

from table1 b where a.name1=b.name1 and a.name2=b.name2......)

删数据:

delete  from table1 a where rowid !=(select max(rowid)

from table1 b where a.name1=b.name1 and a.name2=b.name2......)

 

2.用group by方法

利用分组函数查找表中的重复行:按照某个字段分组,找出行数大于1的列,即由重复记录

利用select 语句中的分组函数GROUP BY/HAVING可以很容易确定重复的行。假设需要创建惟一索引的列为num

对num用group by分组统计并返回每组的个数,如果组中记录数超过1个就存在重复的行。命令如下

查数据:

select count(num), max(name) from student --列出重复的记录数,并列出他的name属性

group by num
having count(num) >1 --按num分组后找出表中num列重复,即出现次数大于一次

删数据:

delete from student

group by num
having count(num) >1

这样的话就把所有重复的都删除了。

 这种查询方式简便、快捷,是ORACLE数据库中最常用的一种方法。

 

3.用distinct方法 -对于小的表比较有用

create table table_new as   select distinct *   from table1 minux

truncate table table1;
insert into table1 select * from table_new;

 

转载于:https://www.cnblogs.com/zuiaijiapei/p/7883816.html

你可能感兴趣的文章
会计电算化常考题目一
查看>>
阿里云服务器CentOS6.9安装Mysql
查看>>
剑指offer系列6:数值的整数次方
查看>>
js 过滤敏感词
查看>>
poj2752 Seek the Name, Seek the Fame
查看>>
软件开发和软件测试,我该如何选择?(蜗牛学院)
查看>>
基本封装方法
查看>>
bcb ole拖拽功能的实现
查看>>
生活大爆炸之何为光速
查看>>
bzoj 2456: mode【瞎搞】
查看>>
[Typescript] Specify Exact Values with TypeScript’s Literal Types
查看>>
[GraphQL] Reuse Query Fields with GraphQL Fragments
查看>>
Illustrated C#学习笔记(一)
查看>>
理解oracle中连接和会话
查看>>
两种最常用的Sticky footer布局方式
查看>>
Scrapy实战篇(三)之爬取豆瓣电影短评
查看>>
HDU 5510 Bazinga KMP
查看>>
[13年迁移]Firefox下margin-top问题
查看>>
Zookeeper常用命令 (转)
查看>>
【CF888E】Maximum Subsequence 折半搜索
查看>>