distinct去重多个字段oracle - CSDN
精华内容
参与话题
  • 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如何实现多个字段去重

    千次阅读 2016-08-11 13:04:04
    我们通常使用distinct关键字来去除重复记录,还有没有其他办法呢?通过查找资料,确认group by也可以,利用rowid也可以实现功能。其中,group by是用来分组统计的,能用distinct的地方就不要用group by。下面我们看...
    我们通常使用distinct关键字来去除重复记录,还有没有其他办法呢?通过查找资料,确认group by也可以,利用rowid也可以实现功能。其中,group by是用来分组统计的,能用distinct的地方就不要用group by。下面我们看一下几种方法具体如何实现,至于选用哪一种,主要还是看需求,实现功能是最主要的。
           首先我们创建测试表hoegh,插入3条记录。我们可以看到,就前两个字段而言,第二条记录和第三条记录是重复的。

    点击(此处)折叠或打开

    1. SQL> 
    2. SQL> create table hoegh(h1 number,h2 number,h3 number);
    3.  
    4. Table created
    5. SQL> insert into hoegh values(1,1,1);
    6.  
    7. row inserted
    8. SQL> insert into hoegh values(2,2,2);
    9.  
    10. row inserted
    11. SQL> insert into hoegh values(2,2,8);
    12.  
    13. row inserted
    14. SQL> commit;
    15.  
    16. Commit complete
    17.  
    18. SQL> select * from hoegh;
    19.  
    20.         H1 H2 H3
    21. ---------- ---------- ----------
    22.          1 1 1
    23.          2 2 2
    24.          2 2 8
    25.  
    26. SQL>

    使用DISTINCT去重
            如下:

    点击(此处)折叠或打开

    1. SQL> 
    2. SQL> select distinct h1,h2 from hoegh;
    3.  
    4. H1 H2
    5. ---------- ----------
    6. 1 1
    7. 2 2

    8. SQL>

    使用group by去重
           
    gruop by是Oracle中常用的分组函数,我们看一下如何使用group by来实现去重功能。

    点击(此处)折叠或打开

    1. SQL> 
    2. SQL> select h1,h2 from hoegh group by(h1,h2);
    3.  
    4.         H1 H2
    5. ---------- ----------
    6.          1 1
    7.          2 2
    8.  
    9. SQL>
            我们需要将重复记录删掉,拿hoegh表来说,我们需要保留h3列值最大的那一行记录,我们可以通过下面语句来实现。

    点击(此处)折叠或打开

    1. SQL> 
    2. SQL> delete from hoegh
    3.   2 where h3 not in (select max(h3) from hoegh group by h1,h2);
    4.  
    5. row deleted
    6.  
    7. SQL> commit;
    8.  
    9. Commit complete
    10.  
    11. SQL> select * from hoegh;
    12.  
    13.         H1 H2 H3
    14. ---------- ---------- ----------
    15.          1 1 1
    16.          2 2 8
    17.  
    18. SQL>
    使用rowid去重
           ROWID是数据的详细地址,通过rowid,oracle可以快速的定位某行具体的数据的位置。通过下面的语句,可以保留重复记录中的最新一条记录(即最后插入的那条记录)。

    点击(此处)折叠或打开

    1. SQL> 
    2. SQL> delete from hoegh 
    3.   2 where rowid not in
    4.   3 (select max(rowid) from hoegh group by(h1,h2));
    5.  
    6. row deleted
    7.  
    8. SQL> commit;
    9.  
    10. Commit complete
    11.  
    12. SQL> 
    13. SQL> select * from hoegh;
    14.  
    15.         H1 H2 H3
    16. ---------- ---------- ----------
    17.          1 1 1
    18.          2 2 8
    19.  
    20. SQL>
    展开全文
  • 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多个字段

    万次阅读 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

    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_status in (80011,80012)

     

    distinct多个字段,当然相同的功能也可用group by 完成
    select a,b,c,min(d) d 
    from A
    group by a,b,c 

    通过使用 group就可以出去相同的返回结果。就不需要使用distinct了。
    二者效率,最好需要哪个的时候用哪个,group by是用来分组统计的,能用disitnct的地方就不要用group by 了。
    网友摘录:
         用group   by   和rownum嵌套,但distinct   效率高

    展开全文
  • 多个字段同时去重

    万次阅读 2017-06-13 16:21:49
    首先创建一个表结构,其中数据如下: 根据上面的name、age、...办法就是把这三个字段拼接成一个字段进行去重,因为这三个字段拼接成一个字段了,那么我们就可以继续使用distinct关键字进行去重了。 Oracle中的SQL
  • Oracle三种去重的方法 distinct group by rowid 分组函数:作用于一组数据,并对一组数据返回一值 常见的分组函数有: count 返回找到的记录数 min 返回一数字列或计算列的最小值 max 返回一数字列或计算列...
  • 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 数据库 去重查询

    万次阅读 2017-05-23 15:03:50
    数据库多字段去重 方法介绍:distinct 关键字、group by 、row_number() over()
  • 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: ...
  • 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 去重查询

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

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

    千次阅读 2018-03-09 14:27:00
    【问题】怎样对多个字段进行分别去重后再对其求和; 【解法】 相当于把多个字段的字符串连接起来: select count(DISTINCT fcode+cast(fread_date as varchar(30))) from my_table ...
  • Oracle根据去重

    千次阅读 2019-08-19 14:41:24
    (1)distinct 关键词 distinct用于返回唯一不同的值,可作用于单列和多列 但必须将其放在开头,否则会提示错误 ...与聚合函数联用可以在取多个字段的同时去重其中一个字段 例如要显示的字段为A、...
  • 但是我想要通过一个字段去重,就是那个字段重复的全部去掉,代码如下: ``` select distinct myt.task_seq , mytr.actual_start_date,mytr.actual_end_date,mytr.status from mss_yearend_task ...
  • 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_
  • 一般情况下,数据库去重复有以下那么三种方法:第一种: 两条记录或者条记录的每一个字段值完全相同,这种情况去重复最简单,用关键字distinct就可以去掉。例:1SELECT DISTINCT * FROM TABLE第二种: 两条...
  • 多重left join去重

    万次阅读 2016-11-30 11:56:14
    在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct关键字来过滤掉多余的重复记录只保留一条,但往往只 用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是...
1 2 3 4 5 ... 20
收藏数 4,308
精华内容 1,723
热门标签
关键字:

distinct去重多个字段oracle