精华内容
下载资源
问答
  • oracle字段去重查询

    2018-06-29 15:38:00
    oracle字段去重查询 CreationTime--2018年6月29日15点11分 Author:Marydon 1.情景展示  需要对表BASE_MRI_DEVICE的COMPNAME、FIELDSTR、VERSION字段分别进行去重查询,如何使用一个sql搞定? 2.需求分析 ...
     

    oracle 多字段去重查询

    CreationTime--2018年6月29日15点11分

    Author:Marydon

    1.情景展示

      需要对表BASE_MRI_DEVICE的COMPNAME、FIELDSTR、VERSION字段分别进行去重查询,如何使用一个sql搞定?

    2.需求分析

      注意:是分别对3个字段进行去重,而不是3个字段联合去重。

      首先,必须进行三次查询,而将查询结果进行"行合并"需要用到union或union all;

      其次,为了区分查询结果属于哪个字段,所以需要3列,

      同时,为了保证每次查询只对一个字段进行去重查询,可以将另外2个字段置空。

    3.代码实现

      方式一:使用group by(数据库通用)

    --对COMPNAME、FIELDSTR、VERSION进行去重查询
    SELECT *
      FROM (SELECT COMPNAME, '' FIELDSTR, '' VERSION
              FROM BASE_MRI_DEVICE
            UNION ALL
            SELECT '' COMPNAME, FIELDSTR, '' VERSION
              FROM BASE_MRI_DEVICE
            UNION ALL
            SELECT '' COMPNAME, '' FIELDSTR, VERSION
              FROM BASE_MRI_DEVICE)
     GROUP BY COMPNAME, FIELDSTR, VERSION

      方式二:使用distinct(Oracle独有)

    --对COMPNAME、FIELDSTR、VERSION进行去重查询
    SELECT DISTINCT COMPNAME, '' FIELDSTR, '' VERSION
      FROM BASE_MRI_DEVICE
    UNION ALL
    SELECT DISTINCT '' COMPNAME, FIELDSTR, '' VERSION
      FROM BASE_MRI_DEVICE
    UNION ALL
    SELECT DISTINCT '' COMPNAME, '' FIELDSTR, VERSION
      FROM BASE_MRI_DEVICE

    4.效果展示

      方式一

      方式二

     

     

    转载于:https://www.cnblogs.com/Marydon20170307/p/9243754.html

    展开全文
  • oracle字段去重

    2012-12-07 23:46:50
    oracle字段去重 以某一个字段去重 oracle字段去重 以某一个字段去重
  • Oracle某个字段去重

    2020-03-22 21:37:50
    测试数据如下 例子1:要求对NAME相同的值只取一条即可 select * from test t where t.rowid in (select max(rowid) from test group by name) 例子1:要求对NAME相同的值只取一条且AGE值最大 ...

    测试数据如下
    在这里插入图片描述

    例子1:要求对NAME相同的值只取一条即可
    select *
      from test t
     where t.rowid in (select max(rowid) from test group by name)
    
    例子1:要求对NAME相同的值只取一条且AGE值最大
    select *
      from test t
     where (t.name, t.age) in (select name, max(age) from test group by name)
    
    展开全文
  • 问题:在oracle中使用group by分组,group by子句中必须包含所有的select中的字段和order by子句中的字段。 在不使用group by子句的情况下,进行分组。(根据部分字段分组) over()分析函数 原sql SELECT IM. ...
    问题:在oracle中使用group by分组,group by子句中必须包含所有的select中的字段和order by子句中的字段。

    在不使用group by子句的情况下,进行分组。(根据部分字段分组)

    over()分析函数

    原sql

            SELECT
    			IM. ID mediaGroupId,
    			IC. ID cardId,
    			IC.CARD_CONTENT,
    			IC.CARD_TITLE,
    			IM.UPDATE_TIME mediaUpdateTime,
    			IP.SM_URL cardImgUrl,
    			ICB.BUTTON_NAME
    		
    		FROM
    			INFO_MEDIA IM
    		LEFT JOIN INFO_CARD IC ON IM. ID = IC.MEDIA_ID
    		LEFT JOIN INFO_CARD_BUTTON ICB ON IC. ID = ICB.CARD_ID
    		LEFT JOIN INFO_PIC IP ON IP. ID = IC.MEDIA_PIC_ID
    		WHERE
    			IM. ID = '1'
    		ORDER BY
    			IM.UPDATE_TIME DESC
    

    在这里插入图片描述

    我需要根据cardId字段去重,但是看结果还是有重复的。如果使用group by子句的话,是 无法去重 的。因为button_name字段值是不同的,oracle还是会认为两条记录不重复。

    改进sql

        SELECT
    	    *
        FROM
    	(
    		SELECT
    			IM. ID mediaGroupId,
    			IC. ID cardId,
    			IC.CARD_CONTENT,
    			IC.CARD_TITLE,
    			IM.UPDATE_TIME mediaUpdateTime,
    			IP.SM_URL cardImgUrl,
    			ICB.BUTTON_NAME,
    			ROW_NUMBER() OVER (PARTITION BY IC. ID ORDER BY IM.UPDATE_TIME) AS ROW_NUM
    		FROM
    			INFO_MEDIA IM
    		LEFT JOIN INFO_CARD IC ON IM. ID = IC.MEDIA_ID
    		LEFT JOIN INFO_CARD_BUTTON ICB ON IC. ID = ICB.CARD_ID
    		LEFT JOIN INFO_PIC IP ON IP. ID = IC.MEDIA_PIC_ID
    		WHERE
    			IM. ID = '1'
    		ORDER BY
    			IM.UPDATE_TIME DESC
    	) T3
        WHERE T3.ROW_NUM = 1
    

    在这里插入图片描述

    可以看出来,在使用ROW_NUMBER() OVER() 函数之后,重复记录就去掉了。
    ps: over() 函数中order by 子句必须写

    展开全文
  • oracle数据库字段去重

    2018-08-22 14:50:41
    delete from 表名 where rowid in (select rid from (select rowid rid,row_number() over(partition by 需要去重字段 order by rowid) rn from 表名) where rn <> 1 );
    delete from 表名 where rowid in 
        (select rid from 
            (select rowid rid,row_number() over(partition by 需要去重的字段 order by rowid) rn from 表名)
        where rn <> 1 );
    
    展开全文
  • 单个字段: select distinct(a) from tableA;...多个字段,利用max()去重SELECT*FROMGM_PPU_RESIDENT_NORBASE g WHEREg.ROWID = ( SELECT max( s.ROWID ) FROM GM_PPU_RESIDENT_NORBASE s WHERE g.CARD_NO = s...
  • 交互式爱情WITH temp as ( select '111' as userid,'5' as status,'7' as ord from dual union all select '111' as userid,'0' as status,'9' as ord from dual union all select '111' as userid,'1'...
  • mysql/oracle字段去重方法

    千次阅读 2011-09-27 16:07:16
    1、Oracle-没尝试过 delete from table where rowid not in (selelct max(rowid) from table group by id,a); 2、mysql-创建临时表,不适合大数据量的表去重 create temp
  • 根据字段去重,。 根据 id和sex 字段去除重复的行,并获取其它的列: select id,name,sex from( select a.*,row_number() over(partition by a.id,a.sex order by name) su from test a ) where su=1 其中,...
  • Oracle 多个字段去重

    千次阅读 2019-05-28 10:36:28
    SELECT DISTINCT SUBSTR(d.DEPT_ID, 0, 2) DEPT,d.SECURITY_CHECK --截取前俩位判断去重复 FROM SAF_T_INSPECTION_DEPT d SELECT A .desc_, A .ID_, B.CHECK_TYPE FROM ( SELECT * ......
  • oracle查询多列时对单列去重 最近有一个查询,...
  • -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 ...
  • oracle 多个字段 去重

    千次阅读 2012-09-25 17:37:05
    select distinct(字段一||字段二||字段三)   用“||”连接就行
  • oracle distinct多字段去重

    万次阅读 2016-02-19 10:56:26
    现在要对表数据去重,留下一行,修改如下: select * from ti_vw_boss where transactionid in (select min(TRANSACTIONID) from ti_vw_boss group by dn,dn_type,productid,src_spid); 结果: ...
  • if not object_id('Tempdb..#T') is null drop table #T ...如果还不能解决问题 建议楼主给出具体需求 是根据哪个字段来去重复的   转载于:https://www.cnblogs.com/langtianya/p/5997048.html
  • oracle根据某个字段去重查询实例

    万次阅读 2016-12-06 16:00:49
    sql去重复

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,476
精华内容 3,790
关键字:

oracle部分字段去重