distinct去重一个字段 oracle_oracle distinct 去重 在增加显示一个字段 - CSDN
精华内容
参与话题
  • 1.distinct是针对多字段完全一样的去重 ...2.多个字段针对其中一个字段去重: select * from BB_CREDIT_RESULT where rowid in (select max(rowid) from BB_CREDIT_RESULT group by COURSE_ID) ...
    1.distinct是针对多字段完全一样的去重
    2.多个字段针对其中一个字段去重:
    select * from BB_CREDIT_RESULT where rowid in (select max(rowid) from BB_CREDIT_RESULT group by COURSE_ID)
    展开全文
  • oracle distinct字段去重

    千次阅读 2016-02-19 10:59:00
    --select * from ti_vw_boss结果: transactionid dn dn_type productid src_spid opt_type opt_time state 100000000000011213 15855057001 0 PI

    --select * from ti_vw_boss结果:

    transactionid   dn                     dn_type productid                     src_spid                opt_type   opt_time      state
    100000000000011213 158550570010PIBPXXT100118510 0 18-2月 -16 0
    100000000000011244 158550570010PIBPXXT100118510 0 18-2月 -16 0


    现在要对表数据去重,留下一行,修改如下:

    select * from ti_vw_boss where transactionid in (select min(TRANSACTIONID) from ti_vw_boss group by dn,dn_type,productid,src_spid);

    结果:

    transactionid   dn                     dn_type productid                     src_spid                opt_type   opt_time      state
    100000000000011213 158550570010PIBPXXT100118510 0 18-2月 -16 0


    满足要求!



    展开全文
  • oracle查询对某个字段进行去重处理

    千次阅读 2019-10-29 14:57:51
    oracle查询对某个字段进行去重处理需要使用distinct函数 比如从A表查询aa字段和bb字段,然后对aa字段进行去重,查询语句如下: SELECT distinct(a.aa) as aa,a.bb as bb FROM A a 提示:去重字段必须放在第...

    oracle查询对某个字段进行去重处理需要使用distinct函数

    比如从A表查询aa字段和bb字段,然后对aa字段进行去重,查询语句如下:

    SELECT  distinct(a.aa) as aa,a.bb as bb FROM A a

    提示:去重的字段必须放在第一个位置

    查询去重后的数量:

    SELECT  count(distinct(a.aa)) as aacount,a.bb as bb FROM A a

     

    展开全文
  • Oracle三种去重的方法 distinct group by rowid 分组函数:作用于一组数据,并对一组数据返回一个值 常见的分组函数有: count 返回找到的记录数 min 返回一个数字列或计算列的最小值 max 返回一个数字列或计算列...

    Oracle三种去重的方法

    • distinct
    • group by
    • rowid

    分组函数:作用于一组数据,并对一组数据返回一个值

    常见的分组函数有:
    count 返回找到的记录数
    min 返回一个数字列或计算列的最小值
    max 返回一个数字列或计算列的最大值
    sum 返回一个数字列或计算列总和
    avg 返回一个数字列或计算列的平均值

    一、distinct

    distinct 单列

    select distinct(a) from tableA;
    

    distinct 多列

    --会报错,distinct 必须放在 select 语句的最前方
    select a, distinct b,c from tableA;
    
    select distinct a,b,c from tableA;
    

    多列的时候,上述语句是针对abc的组合来distinct的,列出的是abc的所有不同组合,相当于下列语句

    select a,b,c from tableA group by a,b,c;
    

    那么,如果想要分别查询a,b,c三个字段的distinct值怎么办?一开始可能只想到下列三个语句

    select distinct a from tableA;
    select distinct b from tableA;
    select distinct c from tableA;
    

    麻烦,如何合并成一个语句呢,使用union解决,后面拼接的字符串是为了标识这个值属于哪个字段:

    select distinct(a) || ' a' from tableA
    union all
    select distinct(b) || ' b' from tableA
    union all
    select distinct(c) || ' c' from tableA
    

    二、group by

    只查询非分组函数,不需要使用group by

    select Name, Gender from dba_data_files;
    

    只要查询了分组函数,就需要使用group by

    1. 只查询分组函数的话,group by的子句里用到的列名Name 和 Gender,不需要写在select里;但select里出现别的列就会报错;
    select sum(Age) from dba_data_files group by Name, Gender;
    
    -- 但 select 里出现别的列就会报错,例:
    select Weight, sum(Age) from dba_data_files group by Name, Gender;
    
    1. 同时查询分组函数和非分组函数,并且必须将分组函数以外的所有的列(Name 和 Gender),都写到group by里,少一个都不行;
    select Name, Gender, sum(Age) from dba_data_files group by Name, Gender;
    

    不管select是否使用了where子句,都可以使用group by子句

    三、rowid

    rowid简介

    rowid是一个用来唯一标记表中行的伪列。它是物理表中行数据的内部地址,包含两个地址,其一为指向数据表中包含该行的块所存放数据文件的地址,另一个是可以直接定位到数据行自身的这一行在数据块中的地址。
    除了在同一聚簇中可能不唯一外,每条记录的rowid是唯一的。可以理解成rowid就是唯一的。

    rowid解析

    从Oracle 8i开始使用扩展rowid标识行物理地址
    扩展rowid使用base64编码行的物理地址,编码字符包含A-Z, a-z, 0-9, +, 和/。
    扩展rowid由四部分组成:OOOOOOOFFFBBBBBBRRR:
    rowid包含如下内容:
    ①:对象所在的数据文件号
    ②:对象所在的块号
    ③:对象所在行在块内的位置
    ④:对象号
    其中:
    OOOOOO:数据对象编号(6位显示)
    FFF:相关数据文件编号(3位显示)
    BBBBBB:数据块编号(6位显示)
    RRR:数据块中行编号(3位显示)
    在这里插入图片描述

    rowid示例

    利用rowid结合maxmin函数快速去重

    select t.* from bill t where t.rowid = (select max(s.rowid) from bill s 
    where t.FLAG = s.FLAG
      and s.btype = 1
      and s.CODE in ('71131702422','71130427253','71134427859')
    );
    

    利用rowid结合maxmin函数快速删除重复数据

    -- 使用min函数的时候用大于号>
    delete t.* from bill t where t.rowid < (select max(s.rowid) from bill s 
    where t.FLAG = s.FLAG
      and s.btype = 1
      and s.CODE in ('71131702422','71130427253','71134427859')
    );
    

    本文参考链接1.

    Mysql里,可以用Max函数,类似于Oraclerowidmax
    SQL Server中也有First_ValueLast_Value函数,可以用来实现。

    注:group by 必须放在 order by 和 limit之前,不然会报错

    展开全文
  • oracle 数据库 去重查询

    万次阅读 2017-05-23 15:03:50
    数据库多字段去重 方法介绍:distinct 关键字、group by 、row_number() over()
  • oracle数据库使用distinct个字段

    万次阅读 2014-01-24 13:13:53
    select DISTINCT(t.f_resume_id||t.f_resume_status),t.f_resume_status,t.f_resume_status,t.f_recruit_channel,  t.f_small_channel_id   from css.T_RESUME_INFO t where t.f_resume_st
  • 个字段同时去重

    万次阅读 2017-06-13 16:21:49
    首先创建一个表结构,其中数据如下: 根据上面的name、age、...办法就是把这三个字段拼接成一个字段进行去重,因为这三个字段拼接成一个字段了,那么我们就可以继续使用distinct关键字进行去重了。 Oracle中的SQL
  • SQL语句distinct的多个字段去重问题

    万次阅读 热门讨论 2018-09-27 18:25:11
    select distinct name, id from table 或者 select name,id from table group by name 像这样是错误的写法,distinct不起作用的 曲线救国写法: select name,id from table where id in (  select min(id) ...
  • oracle个字段 去重

    千次阅读 2012-09-25 17:38:41
    select distinct(字段一||字段二||字段三)   用“||”连接就行
  • Oracle去重函数distinct

    千次阅读 2019-11-27 10:40:24
    distinct用于返回唯一不同的值。 表table1: id value 1 a 1 a 2 b 3 b 4 c 5 c 表table2: username password tom s123456 toms 123456 表table3: ...
  • oracle 去重查询

    万次阅读 2018-11-23 10:26:33
    --------------------  原作者:搬长城的红砖  原文:...  oracle 数据库多字段去重 方法介绍:distinct 关键字、group by 、row_number ()over(partition by 列 order by 列 desc) 我的需...
  • oracledistinct个字段

    万次阅读 2010-10-18 09:35:00
    select DISTINCT(t.f_resume_id||t.f_resume_status),t.f_resume_status,t.f_resume_status,t.f_recruit_channel, t.f_small_channel_id from wintalent3.T_CORP_LOG_...80012) distinct个字段,当然相同的功能也可
  • Oracle去重后再进行count()计数

    万次阅读 2019-03-19 14:43:05
    时候就去重的逻辑就显得尤为重要! 、首先说说我个人对以下两函数的理解 sum()是基于分组,也就是说有sum()的SQL语句中必须要有group by关键字,而count()可不必基于分组,二者在大多数情况下用以实现计数...
  • Oracle如何实现多个字段去重

    千次阅读 2016-08-11 13:04:04
    我们通常使用distinct关键字来去除重复记录,还有没有其他办法呢?通过查找资料,确认group by也可以,利用rowid也可以实现功能。其中,group by是用来分组统计的,能用distinct的地方就不要用group by。下面我们看...
  • Oracle根据多列去重

    千次阅读 2019-08-19 14:41:24
    (1)distinct 关键词 distinct用于返回唯一不同的值,可作用于单列和多列 但必须将其放在开头,否则会提示错误 ...与聚合函数联用可以在取多个字段的同时去重其中一个字段 例如要显示的字段为A、...
  • 个字段去重后进行求和-SQL

    千次阅读 2018-03-09 14:27:00
    【问题】怎样对多个字段进行分别去重后再对其求和; 【解法】 相当于把多个字段的字符串连接起来: select count(DISTINCT fcode+cast(fread_date as varchar(30))) from my_table ...
  • 但是我想要通过一个字段去重,就是那个字段重复的全部去掉,代码如下: ``` select distinct myt.task_seq , mytr.actual_start_date,mytr.actual_end_date,mytr.status from mss_yearend_task ...
  • Oracle查询出现相同的数据去重

    千次阅读 2018-04-26 17:37:27
    对于查询出现完全相同的结果的情况下,需要去重的时候,把 distinct 放在select的后面即可
  • oracle SQL 去重取最大值

    千次阅读 2014-05-31 11:43:58
    select * from T_RESPONSE_INFO t where t.response_id in(select max(response_id) from T_RESPONSE_INFO res  where res.PRICE_TYPE = '02'  and res.SECTION_ID = '81'  and res.SUBMIT_
1 2 3 4 5 ... 20
收藏数 4,719
精华内容 1,887
关键字:

distinct去重一个字段 oracle