Oracle如何用单字段或多字段进行查重
最近在整理数据形成信用报告,发现重复的数据真的多,梳理都好久。我就做个笔记把去掉重复数据的方法整理下来。方便我后期查阅。
我将我目前已知的两种去重方法分为:视图去重和表去重。原理就是有无rowid这个字段。
单字段查重
表A:
ID | name | uscc | money |
---|---|---|---|
1 | 张飞 | 11111 | 100 |
2 | 关羽 | 22222 | 100 |
3 | 刘备 | 33333 | 300 |
4 | 马超 | 44444 | 400 |
5 | 张飞 | 55555 | 100 |
6 | 马超 | 44444 | 400 |
这时候,我们来进行去重:如果只根据一个字段来去重的话,根据name字段,我们看下重复的有两条数据为‘张飞’和‘马超’
这个时候我们用最简单的方法rowid。通俗易懂
select * from 表A where rowid in(
select max(rowid) from 表A group by NAME)
order by id;
id | name | uscc | money |
---|---|---|---|
1 | 张飞 | 11111 | 100 |
2 | 关羽 | 22222 | 100 |
3 | 刘备 | 33333 | 300 |
4 | 马超 | 44444 | 400 |
这个时候,数据就如上图所示。当name字段一样的时候,取rowid最大的保留。
上面那个是去重语句,下面说下查询表中的重复数据有哪些的语句
select * from 表A t,(select NAME from 表A group by NAME having count(1)>1) x
where t.NAME=x.NAME
order by t.id
id | name | uscc | money |
---|---|---|---|
1 | 张飞 | 11111 | 100 |
4 | 马超 | 44444 | 400 |
5 | 张飞 | 55555 | 100 |
6 | 马超 | 44444 | 400 |
但是呢,有的时候我们使用多张表整合的视图,进行去重,这时候就没有rowid了。我们要怎么去重呢?
select * from (select s.* from
(select t.*,row_number() over (partition by uscc order by uscc) as group_idx
from 表A t ) s
where s.group_idx = 1)
查询结果为:
id | name | uscc | money |
---|---|---|---|
1 | 张飞 | 11111 | 100 |
2 | 关羽 | 22222 | 100 |
3 | 刘备 | 33333 | 300 |
4 | 马超 | 44444 | 400 |
多字段查重
我们取NAME和USCC两个字段进行查重,因为很多时候,数据判断是否重复并不是一个字段就可以了,而且通过两个,甚至是一整条数据是否完全相同进行查重,这时候我们就用下面这个语句
select * from (select s.* from
(select t.*,row_number() over (partition by name,uscc order by name,uscc) as group_idx
from 表A t ) s
where s.group_idx = 1)
查询结果如下:
ID | name | uscc | money |
---|---|---|---|
1 | 张飞 | 11111 | 100 |
2 | 关羽 | 22222 | 100 |
3 | 刘备 | 33333 | 300 |
4 | 马超 | 44444 | 400 |
5 | 张飞 | 55555 | 100 |
ID=6的‘马超’这条数据进行了去重,因为这个条数据NAME和USCC都重复了,所以只取一条。
好记性不如烂笔头,虽然当时还记得怎么写,但是时间一长,就会忘记,如果没有良好的记录的习惯,下次还会百度找资料,很耽误时间。
Oracle如何用单字段或多字段进行查重的更多相关文章
- 用jquery在必填表单字段前加红星总结
一.总结: 今天公司项目中要求给表单中的必填字段添加标记,因为表单字段比较多,后期又有可能某些字段会有变化,所以写了一段js代码来给表单添加标记. html代码: js代码: 关键步骤: 1.红星的设 ...
- 如何设置织梦cms自定义表单字段为必填项
1.编辑器打开\plus\diy.php2.在40行左右找到此行代码:$dede_fields = empty($dede_fields) ? '' : trim($dede_fields);3.在这 ...
- 【小工具】根据定义的白名单字段进行Bean的拷贝
背景 Bean的拷贝一直有一些类可以使用,比如Apache的org.apache.commons.beanutils.BeanUtils或者Spring的org.springframework.bea ...
- oracle数据库根据不同条件给同一字段修改相应的值:
oracle数据库根据不同条件给同一字段修改相应的值: 例如:根据职务调整雇员的工资,如果职务为“SALESMAN”或者“ANALYST”工资上调100元,如果职务为“MANAGER”工资上调200元 ...
- 在Oracle 11g中用看Oracle的共享内存段---------IPCS
很早之前,在一次讲课了,用了命令ipcs,发现oracle的共享内段好小,如下: oracle@mydb ~]$ ipcs -a ------ Shared Memory Segments ----- ...
- Oracle学习笔记:wm_concat函数合并字段
在Oracle中使用wm_concat(column)可以实现字段的分组合并,逗号分隔. 例如,现有表temp_cwh_test: -- 创建临时表 create table temp_cwh_tes ...
- oracle 将当前系统时间戳插入timestamp字段
oracle 将当前系统时间戳插入timestamp字段 --insert records 精确到秒:insert into userlogin_his(usrname,logintime) valu ...
- oracle 12c 新特性之不可见字段
在Oracle 11g R1中,Oracle以不可见索引和虚拟字段的形式引入了一些不错的增强特性.继承前者并发扬光大,Oracle 12c 中引入了不可见字段思想.在之前的版本中,为了隐藏重要的数据字 ...
- 如何用SQL语句在指定字段前面插入新的字段?
如何用SQL语句在指定字段前面插入新的字段? 2007-10-17 09:28:00| 分类: 笔记|举报|字号 订阅 create proc addcolumn @tablename va ...
随机推荐
- 【SPOJ DQUERY】区间数字统计
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 因为区间的端点移动一个单位的话,只会涉及到一个元素的增多或减少. 因此可以用莫队算法来解决. 只需要开一个数组(大小1百万),用下标来快速检索 ...
- 笨办法学Python记录--习题15-17 开始读写文件啦
习题15 - 17 打开并读流程: from sys import argv script,filename = argv txt = open(filename) print "Here' ...
- 笨办法学Python记录--习题1-11
20140412(习题1-10),和打印较劲: 1. 读这本书时没有按照要求安装Python2,我选择的是最新版3.4.0(官方release),然后悲剧发现完全不兼容,现在摘录2,3区别: 这个星期 ...
- ZK4字命令
zookeeper4字命令:两种方式,1.通过telnet链接服务器,执行stat.2.echo stat|nc xxx.xxx.xxx.xxx 2181效果是一样的conf:zk服务器运行时的基本信 ...
- sql中desc的妙用
很多情况下对表内部结构不熟悉,想看下我创建的表里面又多少表明,又想他按照首字母的规律排列, 这时候就要用desc +表名了. desc t_bike_info; hive> desc t_bik ...
- 3. Image Structure and Generation
名词 Extensible Linking Format(ELF) 3.1 The structure of an ARM ELF image ARM ELF映像包含sections, regions ...
- Codeforces 166B - Polygon (判断凸包位置关系)
Codeforces Round #113 (Div. 2) 题目链接:Polygons You've got another geometrical task. You are given two ...
- C/S通信
一直在考虑写一个服务端和客户端通信的框架,就现在的需求,打算走http协议. 通信方式打算用Key/Value的形式. 这里面其实还是有很多的问题的,这样的一个通信框架其实是SOA的一部分.其他 但是 ...
- 使用豆瓣源安装python包
Python pip安装的原理就是从Python的官方源https://pypi.python.org/pypi下载到本地安装, 但是访问官方源网络不稳定,速度较慢,我经常会遇到一个问题,pip安装包 ...
- CSS布局标准
回顾历史,CSS1于1996.12.17发正式版,它是为辅助HTML的展现效果而生的.1998.5.12,CSS2发正式版.随后发修订版CSS2.1,纠正了CSS2中的一些错误.注意从CSS2起,CS ...