精华内容
下载资源
问答
  • 交互式爱情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'...

    7ce56d1a060f7000b6fa1a31edca0a3f.png

    交互式爱情

    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' as status,'8' as ord from dual    union all    select '222' as userid,'3' as status,'3' as ord from dual    union all    select '222' as userid,'1' as status,'2' as ord from dual    union all    select '222' as userid,'2' as status,'4' as ord from dual    union all    select '333' as userid,'3' as status,'10' as ord from dual    )select userid,status,ord from (    select userid,status,ord,row_number() over(partition by userid order by ord desc)  rn from temp)where rn=1;

    展开全文
  • if not object_id('Tempdb..#T') is null drop table #T Go Create table #T([ID] int,[Name] nvarchar(1),[Memo] nvarchar(2)) Insert #T select 1,N'A',N'A1' union all ...select 2,N'A',N'A2' union al...
    if not object_id('Tempdb..#T') is null
        drop table #T
    Go
    Create table #T([ID] int,[Name] nvarchar(1),[Memo] nvarchar(2))
    Insert #T
    select 1,N'A',N'A1' union all
    select 2,N'A',N'A2' union all
    select 3,N'A',N'A3' union all
    select 4,N'B',N'B1' union all
    select 5,N'B',N'B2'
    Go
     
     
    --I、Name相同ID最小的记录(推荐用1,2,3),方法3在SQl05时,效率高于1、2
    方法1:
    Select * from #T a where not exists(select 1 from #T where Name=a.Name and ID<a.ID)
     
    方法2:
    select a.* from #T a join (select min(ID)ID,Name from #T group by Name) b on a.Name=b.Name and a.ID=b.ID
     
    方法3:
    select * from #T a where ID=(select min(ID) from #T where Name=a.Name)
     
    方法4:
    select a.* from #T a join #T b on a.Name=b.Name and a.ID>=b.ID group by a.ID,a.Name,a.Memo having count(1)=1 
     
    方法5:
    select * from #T a group by ID,Name,Memo having ID=(select min(ID)from #T where Name=a.Name)
     
    方法6:
    select * from #T a where (select count(1) from #T where Name=a.Name and ID<a.ID)=0
     
    方法7:
    select * from #T a where ID=(select top 1 ID from #T where Name=a.name order by ID)
     
    方法8:
    select * from #T a where ID!>all(select ID from #T where Name=a.Name)
     
    方法9(注:ID为唯一时可用):
    select * from #T a where ID in(select min(ID) from #T group by Name)
     
    --SQL2005:
     
    方法10:
    select ID,Name,Memo from (select *,min(ID)over(partition by Name) as MinID from #T a)T where ID=MinID
     
    方法11:
     
    select ID,Name,Memo from (select *,row_number()over(partition by Name order by ID) as MinID from #T a)T where MinID=1
     
    生成结果:
    /*
    ID          Name Memo
    ----------- ---- ----
    1           A    A1
    4           B    B1
     
    (2 行受影响)
    */
     
     
    --II、Name相同ID最大的记录,与min相反:
    方法1:
    Select * from #T a where not exists(select 1 from #T where Name=a.Name and ID>a.ID)
     
    方法2:
    select a.* from #T a join (select max(ID)ID,Name from #T group by Name) b on a.Name=b.Name and a.ID=b.ID order by ID
     
    方法3:
    select * from #T a where ID=(select max(ID) from #T where Name=a.Name) order by ID
     
    方法4:
    select a.* from #T a join #T b on a.Name=b.Name and a.ID<=b.ID group by a.ID,a.Name,a.Memo having count(1)=1 
     
    方法5:
    select * from #T a group by ID,Name,Memo having ID=(select max(ID)from #T where Name=a.Name)
     
    方法6:
    select * from #T a where (select count(1) from #T where Name=a.Name and ID>a.ID)=0
     
    方法7:
    select * from #T a where ID=(select top 1 ID from #T where Name=a.name order by ID desc)
     
    方法8:
    select * from #T a where ID!<all(select ID from #T where Name=a.Name)
     
    方法9(注:ID为唯一时可用):
    select * from #T a where ID in(select max(ID) from #T group by Name)
     
    --SQL2005:
     
    方法10:
    select ID,Name,Memo from (select *,max(ID)over(partition by Name) as MinID from #T a)T where ID=MinID
     
    方法11:
    select ID,Name,Memo from (select *,row_number()over(partition by Name order by ID desc) as MinID from #T a)T where MinID=1
     
    生成结果2:
    /*
    ID          Name Memo
    ----------- ---- ----
    3           A    A3
    5           B    B2
     
    (2 行受影响)
    */
     
    如果还不能解决问题  建议楼主给出具体需求  是根据哪个字段来去重复的

     

    转载于:https://www.cnblogs.com/langtianya/p/5997048.html

    展开全文
  • oracle根据某个字段去重查询实例

    万次阅读 2016-12-06 16:00:49
    select 1,N’A’,N’A1’ union all select 2,N’A’,N’A2’ union all select 3,N’A’,N’A3’ union all select 4,N’B’,N’B1’ union all select 5,N’B’,N’B2’ Go –I、Name相同ID最小的...

    if not object_id(‘Tempdb..#T’) is null
    drop table #T
    Go
    Create table #T([ID] int,[Name] nvarchar(1),[Memo] nvarchar(2))
    Insert #T
    select 1,N’A’,N’A1’ union all
    select 2,N’A’,N’A2’ union all
    select 3,N’A’,N’A3’ union all
    select 4,N’B’,N’B1’ union all
    select 5,N’B’,N’B2’
    Go

    –I、Name相同ID最小的记录(推荐用1,2,3),方法3在SQl05时,效率高于1、2
    方法1:
    Select * from #T a where not exists(select 1 from #T where Name=a.Name and ID

    展开全文
  • 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三种去重的方法 distinct group by rowid 分组函数:作用于一组数据,并对一组数据返回一个值 常见的分组函数有: count 返回找到的记录数 min 返回一个数字列或计算列的最小值 max 返回一个数字列或计算列...
  • 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' as status,'8' as ord ...
  •  1、union :得到两个查询结果的并集,并且自动去掉重复行。不会排序   2、union all:得到两个查询结果的并集,不会去掉重复行。不会排序   3、intersect:得到两个查询结果的交集,并且按照...
  • oracle union 注意事项

    2017-08-06 13:26:29
    select 字段union  select 字段数 两个 数必须相等 如果列不够 可以用TO_CHAR(null)来补空, 或者直接用 0 补 --- union all 不会考虑 相同的字段 去重
  • union和uinon all的区别是:union会对结果集中的重复结果去重,而union all则会将所有的结果全部显示出来。union:对两个(或多个)结果集进行并集操作,不包括重复行,同时进行默认规则的排序。union all:对两个结.....
  • oracle union

    2016-06-07 16:11:00
    union 两张表的相同字段的数据[记录类型和列数要一致],合并,并且去重 can replace with "in" (但是如果是两个不同的表而且没什么关联的话必须要union了) union all 不会去重 minus 找出第一张表查询结果与第...
  • Oracle union union all

    2013-01-10 21:14:47
    如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来。  unionunion all的区别是,union会自动压缩多...
  • oracle union的用法

    2017-01-05 18:43:24
    UNION 指令的目的是将两个 SQL 语句的结果合并起来,可以查看你要的查询结果. select * from t_ar_ws_file where is_delete='0' and status='80' and id not in ( select archive_id from t_ps_archivemove_...
  • OracleUnionUnion All

    2014-06-12 00:07:00
    Oracle中,UnionUnion All 都是可以将两条查询结果连接起来集合操作(Set Operation),但使用时要注意区分,以免发生数据错误。今天在将两个结果拼在一起时,发现单独执行时结果A 中有169条,结果B有0条,但...
  • 之前只知道unionunion all的区别在于是否对记录去重,最近开发过程中发现还有一个区别,记录下: ...union进行默认规则的排序,是指对两个或多个结果集合并后,按照查出字段的先后顺序进行排序,比如查出的字...
  • ORACLEOracle提高篇之UNION&UNION ALL

    千次阅读 2018-10-20 17:43:00
    在使用数据库查询的时候,有的时候是需要把多个查询结果作为一个整体输出,这个时候我们就需要使用UNION&amp;UNION ALL UNION&amp;UNION ALL 作用 UNION&amp;UNION ALL(或称为联合)的作用是将多个结果...
  • 基础用法:LISTAGG(XXX,XXX) WITHIN GROUP( ORDER BY XXX),就像聚合函数一样,通过Group by语句,把每个Group的一个字段,拼接起来 LISTAGG()其实可以把它当作SUM()函数来使用或者理解 针对上一个的查询SQL ...
  • 1、触发器的作用? 触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经... 30、oracle怎么去除去重 使用distinct关键字
  • unionunion all的区别 ...Union按照字段的顺序进行排序; UNION ALL不进行排序,只是简单的将两个结果合并后就返回。 3.效率: union all因不进行排序,较union all快。 简要回答: UNION去重且排序 UNION ALL不...
  • Oracle 中对clob字段进行distinct 操作

    千次阅读 2018-12-28 17:24:13
    oracle 10+g不支持对类型为CLOB的列进行distinct,也不支持union,所以在遇到此问题,需要对SQL语句进行重新,从另一思想去实现同样的效果的。union没仔细思考过,具体还要看union里面的条件如何,最简单的方法是...
  • 为了从数据库导出数据直接生成excel表,为了客户对比数据使用,根据条件查找并去重等众多艰难险阻,不断百度和查看大量操作方式和实验得出这么几条经验,拿出来给大家分享一下,如果有哪里不对或者探讨请联系我,在...
  • 最近工作中需要用到合并查询,中间踩到了几个坑,用了一整天来修改,最后成功...#使用union all合并两次的查询结果,需要使第一次查询和第二次查询的字段和数据类型完全相同 两次查询的字段之间必须一一对应, ...
  • union 两张表的相同字段的数据[记录类型和列数要一致],合并,并且去重 can replace with "in" (但是如果是两个不同的表而且没什么关联的话必须要union了) union all 不会去重 minus 找出第一张表查询结果与第...
  • 但是要注意使用union连接的两个sql 语句的字段类型 、 字段个数 、 字段名要求完全匹配 。 un… 2.解决办法 使两个sql的各自的结果集的字段名 、 字段类型 、 字段个数 保持一致 使两个sql 的结果集中的字段顺序...
  • 这篇文章说一个关于ORACLE中的UNIONUNION ALL、INTERSECT、MINUS的解释和用法: 先创建一张TABLE,用来做实验: 建表语句如下所示: create table student ( id int primary key, name nvarchar2(50) not null, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,176
精华内容 1,670
关键字:

oracleunion根据字段去重