-----------------------------------------------------------------------------模拟数据---------------------------------------------------------------------------
--创建测试数据及表结构

create table tablename(N1 varchar2(10), N2 varchar2(10), N3 varchar2(10));

insert into tablename 1, 2, 3 from dual union allselect 1, 2, 3 from dual union allselect 5, 2, 3 from dual union allselect 10, 20, 30 from dual ;commit;select*from tablename;

--数据集(针对指定列,查出去重后的结果集)
--N1 N2 N3
--1 2 3
--1 2 3
--5 2 3
--10 20 30

-----------------------------------------------------------------------------distinct-----------------------------------------------------------------------------
select distinct t1.* from tablename t1;
N1 N2 N3
10 20 30
1 2 3
5 2 3
--方法局限性很大,因为它只能对全部查询的列做去重。如果我想对N2,N3去重,那我的结果集中就只能有N2,N3列,而不能有N1列。

select distinct t1.N2, N3 from tablename t1
N2 N3
2 3
20 30
--不过它也是最简单易懂的写法。

-----------------------------------------------------------------------------row_number-----------------------------------------------------------------------------
select * from (select t1.*,
row_number() over(partition by t1.N2, t1.N3 order by 1) rn
from tablename t1) t1 where t1.rn = 1;

N1 N2 N3 RN
1 2 3 1
10 20 30 1
--写法上要麻烦不少,但是有更大的灵活性。

--针对指定列,查出所有重复的行
-----------------------------------------------------------------------------count having-----------------------------------------------------------------------------
select * from tablename t
where (t.N2, t.N3) in (select t1.N2, t1.N3
from tablename t1
group by t1.N2, t1.N3
having count(1) > 1)
N1 N2 N3
1 2 3
1 2 3
5 2 3
--要查两次表,效率会比较低。不推荐。
------------------------------------------------------------------------------count over----------------------------------------------------------------------------
select * from (select t1.*,
count(1) over(partition by t1.N2, t1.N3) rn
from tablename t1) t1 where t1.rn > 1;
N1 N2 N3 RN
1 2 3 3
1 2 3 3
5 2 3 3
--只需要查一次表,推荐。

ORACLE 去重的更多相关文章

  1. oracle去重

    oracle去重 create table tmp_table3 as (SELECT seqno FROM (SELECT t.seqno,ROWID, ROW_NUMBER() OVER(PART ...

  2. Oracle 去重查询

      Oracle 去重查询 CreateTime--2018年2月28日15:38:45 Author:Marydon (一)使用distinct --查询指定区间内表停诊字段的值 SELECT DI ...

  3. oracle去重等基础问题

    --去重查询方法一:根据id select * from sxe where id in(select min(id) from sxe group by username) order by id ...

  4. 转转转--oracle 去重并按时间排序取第一条

    select t.* from (select a.*, row_number() over(partition by 需要分组的字段 order by 更新时间 desc) rw from 表 a) ...

  5. Oracle 去重后排序

    因项目需求,需要将查询结果,去重后,在按照主键(自增列)排序,百度一番,记录下来 DEMO SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY S ...

  6. Oracle 去重并显示所有列数据

    一.原始数据(默认会生成一个 rownum 的序列,如下图的第一列) select t.* from ZD_DIC t where t.zdlx = '人员类型' 二.先分组,再给组内的内容进行排序 ...

  7. oracle去重试验

    http://blog.csdn.net/lunajiao/article/details/76014488

  8. oracle 多字段去重查询

      oracle 多字段去重查询 CreationTime--2018年6月29日15点11分 Author:Marydon 1.情景展示 需要对表BASE_MRI_DEVICE的COMPNAME.F ...

  9. 【Oracle&SQLServer】并集、交际、补集

    1.并集(UNION/UNION ALL) Oracle&SQLServer中用法一致 UNION 去重 UNION ALL 不去重 -- 去重 select * from tablea un ...

  10. oracle 根据字段查询重复数据

      1.情景展示 由上图可知,APPUSERID字段和VIRTUAL_CARDID字段存在一对多的关系,如何将重复的APPUSERID字段的数据查询出来呢? 2.原因分析 先查出重复的APPUSERI ...

随机推荐

  1. logback 日志脱敏处理

    1.按正则表达式脱敏处理 参考: https://www.cnblogs.com/htyj/p/12095615.html http://www.heartthinkdo.com/?p=998 站在两 ...

  2. MogDB 学习笔记之 -- truncate 属于dml语句

    # 概念描述验证create 语句.alter 语句.truncate语句.drop语句 是属于ddl 还是dml # 测试验证 1.环境准备 ```修改log_statement 参数miao=# ...

  3. Java语言出现的背景、影响及应用前景分析

    一.背景 1991年 ,SUN MicroSystem公司的 Jame Gosling. Bill Joe等人 ,为在电视.控制烤面包箱等家用消费类电子产品上进行交互式操作而开发了一个名为Oak的软件 ...

  4. antVue range-picker 限制当前时间之前的时间不可选择

    <a-range-picker :format="dateFormat" size="small" :showToday="true" ...

  5. jquery 事件方法大全

    <!DOCTYPE html><html> <head> <meta charset="utf-8"> <style type ...

  6. WindowsServer2012搭建FTP服务器站点

    公司需要搭建一个FTP服务器给银行推送账单,这个文章整理的比较详细,可以参考 数据来源: https://blog.csdn.net/u010483330/article/details/125931 ...

  7. java stream map和 flatmap区别

    区别:map mapper返回R,flatMap mapper返回Stream<R> 官网解释 1,<R>Stream<R> flatMap(Function< ...

  8. java发送短信验证码带倒计时

    分享一个完整的java发送短信验证码的完整实例,这是一个官方的使用demo,带有60秒倒计时功能. 效果: 我使用的是榛子云短信平台, 官网地址:http://smsow.zhenzikj.com 我 ...

  9. 简述ECMAScript6的新特性

    1.增加块级作用域 2.增加let const 3.解构赋值 4.函数参数拓展(函数参数可以使用默认值,不定参数及拓展参数) 5.增加class类支持 6.增加箭头函数 7.增加模块和模块加载(ES6 ...

  10. JLink OB SWI 取代串口打印的方式

    1:debug的串口被占用 2:从Keil 迁移到的LINUX下开发. 3:手上只有JLinkOB,(4线:CLK,SWIO,GND,RST) 4:设备只引出了4线(SWO 没接出) 环境: JLin ...