Oracle去除重复数据
查询某些字段相同的记录
如:查询col1与col2值相同的记录:
select a.* from table1 a, table1 b where a.id <> b.id and a.col1 = b.col1 and a.col2 = b.col2;
一、用rowid方法:
根据oracle自带的rowid属性进行判断是否存在重复记录。
rowid伪列用于唯一标识物理位置的表行,当用insert插入数据时,会自动生成rowid,与数据一起存放,形如:AAAL=XAAAEAAAAA。
1、查数据:
select * from table1 a where rowid!= (select max(rowid) from table1 b where a.col1 = b.col1 and a.col2 = b.col2;
2、删数据:
保留rowid最大的记录:
delete from table1 a where rowid!= (select max(rowid) from table1 b where a.col1 = b.col1 and a.col2 = b.col2;
二、group by 方法:
1、查数据:
select * from table1 a where (a.col1,a.col2) in (select col1,col2 from table1 group by col1,col2 having count(*)>1)
2、删数据:
删除表中多余的重复记录(多个字段),只保留rowid最小的记录。
delete from table1 a where (a.col1,a.col2) in (select col1,col2 from table1 group by col1,col2 having count(*)>1) and rowid not in (select min(rowid) from table1 group by col1,col2 having count(*)>1)
到此这篇关于Oracle去除重复数据的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
oracle快速删除重复的记录
正在看的ORACLE教程是:oracle快速删除重复的记录.做项目的时候,一位同事导数据的时候,不小心把一个表中的数据全都搞重了,也就是说,这个表里所有的记录都有一条重复的.这个表的数据是千万级的,而且是生产系统.也就是说,不能把所有的记录都删除,而且必须快速的把重复记录删掉. 对此,总结了一下删除重复记录的方法,以及每种方法的优缺点. 为了陈诉方便,假设表名为Tbl,表中有三列col1,col2,col3,其中col1,col2是主键,并且,col1,col2上加了索引. 1.通过创建临时表
-
解决Oracle删除重复数据只留一条的方法详解
查询及删除重复记录的SQL语句1.查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断select * from 表 where Id in (select Id from 表 group by Id having count(Id) > 1) 2.删除表中多余的重复记录,重复记录是根据单个字段(Id)来判断,只留有rowid最小的记录DELETE from 表 WHERE (id) IN ( SELECT id FROM 表 GROUP BY id HAVING COUNT(id)
-
Oracle删除重复的数据,Oracle数据去重复
Oracle 数据库中查询重复数据: select * from employee group by emp_name having count (*)>1; Oracle 查询可以删除的重复数据 select t1.* from employee t1 where (t1.emp_name) in (SELECT t2.emp_name from employee t2 group by emp_name having count (*)>1) and t1.emp_id not in
-
ORACLE查询删除重复记录三种方法
比如现在有一人员表 (表名:peosons) 若想将姓名.身份证号.住址这三个字段完全相同的记录查询出来 复制代码 代码如下: select p1.* from persons p1,persons p2 where p1.id<>p2.id and p1.cardid = p2.cardid and p1.pname = p2.pname and p1.address = p2.address 可以实现上述效果. 几个删除重复记录的SQL语句 1.用rowid方法 2.用g
-
Oracle 查找与删除表中重复记录的步骤方法
这时候如果临时表中有重复数据,无论是主键字段businessid有重复,还是一整行有重复都会报出违反唯一主键约束错误. 方法:group by XX having count(*)>1,rowid,distinct,temporary table,procedure 1.查询表中的重复数据a.重复一个字段 b.重复多个字段 c.重复一整行 创建测试表: 复制代码 代码如下: create table cfa (businessid number,customer varchar2(50),bra
-
oracle查询重复数据和删除重复记录示例分享
一.查询某个字段重复 select * from User u where u.user_name in (select u.user_name from User u group by u.user_name having count(*) > 1) 二,删除表中某几个字段的重复 例:表中有条六条记录. 其中张三和王五 的记录有重复 TableA id customer PhoneNo 001 张三 777777 002 李四 444444 003 王五 555555 004 张三 7
-
oracle 删除重复数据
重复的数据可能有这样两种情况,第一种: 表中只有某些字段一样,第二种是两行记录完全一样. 一.对于部分字段重复数据的删除 1.查询重复的数据 select 字段1,字段2, count(*) from 表名 group by 字段1,字段2 having count(*) > 1 例:Select owner from dba_tables group by owner having count(*)>1; Select owner from dba_tables group by owner
-
Oracle去除重复数据
查询某些字段相同的记录 如:查询col1与col2值相同的记录: select a.* from table1 a, table1 b where a.id <> b.id and a.col1 = b.col1 and a.col2 = b.col2; 一.用rowid方法: 根据oracle自带的rowid属性进行判断是否存在重复记录. rowid伪列用于唯一标识物理位置的表行,当用insert插入数据时,会自动生成rowid,与数据一起存放,形如:AAAL=XAAAEAAAAA. 1.查
-
oracle数据库去除重复数据常用的方法总结
目录 创建测试数据 针对指定列,查出去重后的结果集 distinct row_number() 针对指定列,查出所有重复的行 count having count over 删除所有重复的行 删除重复数据并保留一条 分析函数法 group by 总结 创建测试数据 create table nayi224_180824(col_1 varchar2(10), col_2 varchar2(10), col_3 varchar2(10)); insert into nayi224_180824 s
-
MySQL 去除重复数据实例详解
MySQL 去除重复数据实例详解 有两个意义上的重复记录,一是完全重复的记录,也即所有字段均都重复,二是部分字段重复的记录.对于第一种重复,比较容易解决,只需在查询语句中使用distinct关键字去重,几乎所有数据库系统都支持distinct操作.发生这种重复的原因主要是表设计不周,通过给表增加主键或唯一索引列即可避免. select distinct * from t; 对于第二类重复问题,通常要求查询出重复记录中的任一条记录.假设表t有id,name,address三个字段,id是主键,有重
-
Angularjs的ng-repeat中去除重复数据的方法
本文实例讲述了Angularjs的ng-repeat中去除重复数据的方法.分享给大家供大家参考,具体如下: 一.JS: ngApp.filter('unique', function () { return function (collection, keyname) { var output = [], keys = []; angular.forEach(collection, function (item) { var key = item[keyname]; if (keys.index
-
Java实现数组去除重复数据的方法详解
本文实例讲述了Java实现数组去除重复数据的方法.分享给大家供大家参考,具体如下: 前一段时间被面试问到:如果一个数组中有重复元素,用什么方法可以去重?一时间会想到用一种方法,但是后来查阅资料后发现,有好多方法可以实现,现在就总结一下,比较简单的几种. 一.用List集合实现 int[] str = {5, 6, 6, 6, 8, 8, 7,4}; List<Integer> list = new ArrayList<Integer>(); for (int i=0; i<s
-
JS实现的数组去除重复数据算法小结
本文实例讲述了JS实现的数组去除重复数据算法.分享给大家供大家参考,具体如下: 在JS中经常会遇到去除数组中重复数据的需求,在此介绍四种算法以实现JS数组去重的功能. 1. 速度最快算法:对象键值对法 实现思路:新建一js对象以及新数组,遍历传入数组时,判断值是否为js对象的键,不是的话给对象新增该键并放入新数组. //注意点: 判断 是否为js对象键时,会自动对传入的键执行"toString()",不同的键可能会被误认为一样:例如: a[1].a["1"] .解决
-
Django 解决distinct无法去除重复数据的问题
今天需要使用Django查询一列的字段(不含重复),搞了一上午,发现这样的事情:如图: 得到的数据几乎是相等的,没有区别. 但是仔细看会发现:下面的数据比起上面的还是少了一个. 解决办法: django的distinct在使用之前必须先使用order_by方法排序,如图: 这样就完美解决了这个问题. 补充知识:Distinct和Group by去除重复字段记录 重复记录 有两个意义,一是完全重复的记录,也即所有字段均重复的记录 二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重
-
java中List去除重复数据的5种方式总结
前言 List 是一个接口,它继承于Collection的接口.它代表着有序的队列.当我们讨论List的时候,一般都和Set作比较. List中元素可以重复,并且是有序的(这里的有序指的是按照放入的顺序进行存储.如按照顺序把1,2,3存入List,那么,从List中遍历出来的顺序也是1,2,3). Set中的元素不可以重复,并且是无序的(从set中遍历出来的数据和放入顺序没有关系). 以下介绍五种-不同的方法去除 Java 中ArrayList中的重复数据 1.使用LinkedHashSet删除
-
Java中List集合去除重复数据的方法汇总
List集合概述 List集合是一个元素有序(每个元素都有对应的顺序索引,第一个元素索引为0).且可重复的集合. List集合常用方法 List是Collection接口的子接口,拥有Collection所有方法外,还有一些对索引操作的方法. void add(int index, E element);:将元素element插入到List集合的index处: boolean addAll(int index, Collection<? extends E> c);:将集合c所有的元素都插入到
随机推荐
- jquery-mobile表单的创建方法详解
- jquery dataview数据视图插件使用方法
- 详解如何去除vue项目中的#——History模式
- 解决tomcat的中文问题
- JAVA多线程实现生产者消费者的实例详解
- 百度云推送图文教程IOS
- PHP中设置时区方法小结
- 在Python中使用mongoengine操作MongoDB教程
- 简单学习Python多进程Multiprocessing
- Python中装饰器的一个妙用
- C语言实现输入一个字符串后打印出该字符串中字符的所有排列
- JSP由浅入深(2)—— 第一个JSP
- Apache Request-URI Too Large错误解决方法
- java求数组第二大元素示例
- 浅析Java验证码生成库JCaptcha
- C#难点逐个击破(5):类的访问类型
- 做一个有下拉功能的留言版
- Android ListView与RecycleView的对比使用解析
- Android控件实现图片缩放功能
- Python实现的端口扫描功能示例