精华内容
下载资源
问答
  • Oracle minus用法详解及应用实例

    万次阅读 2017-10-23 19:00:06
    Oracle minus用法  “minus”直接翻译为中文是“减”的意思,在Oracle中也是用来做减法操作的,只不过它不是传统意义上对数字的减法,而是对查询结果集的减法。A minus B就意味着将结果集A去除结果集B所包含的...

    Oracle minus用法

           “minus”直接翻译为中文是“减”的意思,在Oracle中也是用来做减法操作的,只不过它不是传统意义上对数字的减法,而是对查询结果集的减法。A minus B就意味着将结果集A去除结果集B中所包含的所有记录后的结果,即在A中存在,而在B中不存在的记录。其算法跟Java中的Collection的removeAll()类似,即A minus B将只去除A跟B的交集部分,对于B中存在而A中不存在的记录不会做任何操作,也不会抛出异常。

           Oracle的minus是按列进行比较的,所以A能够minus B的前提条件是结果集A和结果集B需要有相同的列数,且相同列索引的列具有相同的数据类型。此外,Oracle会对minus后的结果集进行去重,即如果A中原本多条相同的记录数在进行A minus B后将会只剩一条对应的记录,具体情况请看下面的示例。

            下面我们来看一个minus实际应用的示例,假设我们有一张用户表t_user,其中有如下记录数据:

    id

    no

    name

    age

    level_no

    1

    00001

    a

    25

    1

    2

    00002

    b

    30

    2

    3

    00003

    c

    35

    3

    4

    00004

    d

    45

    1

    5

    00005

    e

    30

    2

    6

    00006

    f

    35

    3

    7

    00007

    g

    25

    1

    8

    00008

    h

    35

    2

    9

    00009

    i

    20

    3

    10

    00010

    j

    25

    1

           那么:

           (1)“select id from t_user where id<6 minus select id from t_user where id between 3 and 7”的结果将为:

    id

    1

    2

           (2)“select age,level_no from t_user where id<8 minus select age,level_no from t_user where level=3”的结果为:

     

    age

    level_no

    25

    1

    30

    2

    45

    1

            看到这样的结果,可能你会觉得有点奇怪,为何会是这样呢?我们来分析一下。首先,“select age,level_no from t_user where id<8”的结果将是这样的:

    age

    level_no

    25

    1

    30

    2

    35

    3

    45

    1

    30

    2

    35

    3

    25

    1

           然后,“select age,level_no from t_user where level=3”的结果将是这样的:

    age

    level_no

    35

    3

    35

    3

    20

    3

           然后,直接A minus B之后结果应当是:

    age

    level_no

    25

    1

    30

    2

    45

    1

    30

    2

    25

    1

           这个时候,我们可以看到结果集中存在重复的记录,进行去重后就得到了上述的实际结果。其实这也很好理解,因为minus的作用就是找出在A中存在,而在B中不存在的记录。

           上述示例都是针对于单表的,很显然,使用minus进行单表操作是不具备优势的,其通常用于找出A表中的某些字段在B表中不存在对应记录的情况。比如我们拥有另外一个表t_user2,其拥有和t_user表一样的表结构,那么如下语句可以找出除id外,在t_user表中存在,而在t_user2表中不存在的记录。

    ?
    1
    select  no , name ,age,level_no  from  t_user minus  select  no , name ,age,level_no  from  t_user2;

    展开全文
  • oracle中minus用法

    千次阅读 2014-10-29 11:27:08
    最近做项目时,做到这样一个需求,就是获取上一次的登录时间,用到了Oracle中minusminus运算的主要功能是:在进行两个表格或者两个查询结果的时候 ,返回在第一个表格/查询结果与第二个表格/查询结果不...

    最近做项目时,做到这样一个需求,就是获取上一次的登录时间,用到了Oracle中的minus。

    minus运算的主要功能是:在进行两个表格或者两个查询结果的时候 ,返回在第一个表格/查询结果中与第二个表格/查询结果不相同的记录。

    现在把完成这次需求的sql语句发一下:

    select *
      from (select * from t_bpp_loginlog order by login_time desc)
     where rownum <= 2
    minus
    select *
      from (select * from t_bpp_loginlog order by login_time desc)
     where rownum <= 1;


    展开全文
  • minus运算的主要功能是: 在进行两个表格或者两个查询结果的时候,  返回在第一个表格/查询结果与第二个表格/查询结果不相同的记录 比如A表数据如下: ID NAME ADDRESS TEL 1 ABC AAAA 123456 2...
    1、minus运算的主要功能是: 在进行两个表格或者两个查询结果的时候, 
    返回在第一个表格/查询结果中与第二个表格/查询结果不相同的记录
    比如A表中数据如下:
    ID  NAME   ADDRESS   TEL
    1    ABC     AAAA        123456
    2    ABD     BBBB         123455
    3    ABE     CCCCC        111111
    比如B表中数据如下:
    ID  NAME   ADDRESS   TEL
    1    ABC     AAAC       123456
    2    ABD     BBBB         123455
    那么
    (SELECT * FROM A)
    MINUS
    (SELECT * FROM B)
    的结果是:
    1    ABC     AAAA        123456  
    3    ABE     CCCCC        111111
    结果中的第一行数据是由于 A,B 表中的ADDRESS不相等
    结果中的第一行数据是由于 A表中的数据在B表中不存在


    2、oracle中||意思是 字符串连接,相当于 mysql中的 +
    比如: ‘abc’ || 'def' 结果为:'abcdef'
    相当于mysql中 ‘abc’ + 'def'
    展开全文
  • oracle中minus和union的基本用法

    千次阅读 2016-06-09 11:27:36
    oracle数据库开发少不了sql语句,sql有这样一个对集合的操作,他就是union和minus(和intersect基本一样)。 union是将两个或者两个以上的搜索结果集合并到一起,这个合并条件是: 记录的类型要匹配,记录的列...
     
    在oracle数据库开发中少不了sql语句,sql中有这样一个对集合的操作,他就是union和minus(和intersect基本一样)。

    union是将两个或者两个以上的搜索结果集合并到一起,这个合并条件是: 记录的类型要匹配,记录的列数要一样;

    例子:

    SELECT userName,score FROM l_student_mas WHERE user_group = 'TX1'
    UNION
    SELECT userName,score FROM l_student_mas WHERE user_group = 'TX2';

    这里为什么不这么写呢:

    SELECT userName,score FROM l_student_mas WHERE user_id IN ('TX1','TX2');

    这样写是可以的,但是如果是两个不同的表而且没有什么关联关系的话必须要union了。

    SELECT userName,score FROM l_student_mas WHERE user_group = 'TX1'
    UNION
    SELECT 'Eric' userName,'100' score FROM dual;

    有的时候用in可能会非常慢,如果改成union的话效率就会快很多,因为in并不是最有的选择,碰上达标和复杂的查询的时候用union可以提速不少!

    UNION有两种用法: 一种是union,另外一种是union all, 前者有distinct的功能,就是去掉重复的记录,而后者不会去重。

    MINUS和UNION相反,它是减去一部分的结果集,同理它也可以用not in来代替,但是有时候碰到达标和复杂的查询效率还没有minus好。、

    SELECT userName,score FROM l_student_mas WHERE user_group = 'TX1'
    MINUS
    SELECT userName,score FROM l_student_mas WHERE user_group = 'TX2';
    
     

     以前在书上面看到过,突然间忘记了,现在总结一下,谢谢!

    展开全文
  • oracle minus用法(求并集和交集)

    万次阅读 2018-03-19 15:25:03
    表A{1,2,3,4,5,} 表B{4,5,6,7,8,} select * from A minus select * from B;结果:1,2,3。 select * from B minus select * from A;结果为:6,7,8。select * from A unionselect * from B;结果为:1,2,3,4...
  • oracle minus用法

    2020-04-02 17:14:20
    oracle minus用法 MINUS英文含义为减去,减号等意思。 SQL有一个MINUS关键字,它运用在两个SQL语句上,它先找出第一条SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果。如果有的话,那就将第一...
  • 操作可总结为:A minus B就意味着将结果集A去除结果集B所包含的所有记录后的结果,即在A存在,而在B不存在的记录。此时结果集也需要进行排序去重操作。 null union 和 intersect 结果显示在结果集中将 ...
  • Minus:返回的总是左边表的数据,它返回的是差集。 也就是(左表减去右表剩余的数据)。注意:minus有剃重作用 intersect:返回查询结果相同的部分(交集) 数据库设计如下: message表 message——mid表 1....
  • 查询Oracle2个表之间,对比不同的数据,快速输出结果,使用Oracleminus是按列进行比较的,所以A能够minus B的前提条件是结果集A和结果集B需要有相同的列数,且相同列索引的列具有相同的数据类型。此外,Oracle会对...
  • 这两天写程序的时候用到了两个表格数据的比较,学习到了minus用法,小小的总结了一下 minus运算的主要功能是: 在进行两个表格或者两个查询结果的时候 , 返回在第一个表格/查询结果与第二个表格/查询结果不...
  • Oracle中minus取差集与intersect取交集 最近在业务遇到需要取两个结果集中的差集。 首先想到的是加条件where id not in(select id from table)这种类似的SQL语句,但是这种sql随着表数据的增加,后面的数据肯定会...
  • MySQL实现Oracle的Intersect 和 Minus

    千次阅读 2014-12-04 18:12:08
    使用的两个表都非常简单,只为演示可以实现该功能。 table_a 和 table_b的结构如下: 用Oracle实现两个a、b两个表的交集 SELECT a_id as c_id,a_name as c_name from table_a Intersect SELECT b_id as c_id,b_...
  • oracle minus用法和讲解

    2013-09-09 10:09:28
    minus运算的主要功能是: 在进行两个表格或者两个查询结果的时候,  返回在第一个表格/查询结果与第二个表格/查询结果不相同的记录 比如A表数据如下: ID NAME ADDRESS TEL 1 ABC AAAA 123456 2...
  • 两个表的并集使用如下语句: select * from table1 union select * from table2 +----+------+ | id | name | +----+------+ | 1 | a | | 4 | c | | 5 | d | | 6 | e | | 2 | b | | 3 | c | +----+-----...
  • ORACLE两个结果集的minus用法

    千次阅读 2016-06-29 16:54:54
    select * from table where rownum minus select * from table where rownum 简单来说是去同留异,查询结果显示5-9条的数据记录,把第二个结果集的数据过滤显示,和union的用法刚好相反。
  • MINUS使用方法(sql优化)

    千次阅读 2017-09-15 17:40:40
    要比较A和B的差异 两个逻辑 B在A没有的数据就是name:A,B ,语法:select name from TEST_A minus select name from TEST_B ;结果集: 另一个逻辑,B比A多的数据,就是A没有的数据,语法:select name fr
  • oracle中minus

    2011-08-04 09:36:00
    minus的作用简单来说是去同留异,例:select * from ...外再补充一下rownum的用法:rownum也就是伪列,在创建表的时候自动有的。每个表都有伪列,做条件的时候有几个注意点:只能等于1,只能大于0,可以小于任何数。
  • oracle中minus,union

    2017-12-26 11:23:34
    oracle中minus用来做减法操作,对结果集进行减法操作,A minus B就意味着将结果集A去除结果集B所包含的所有记录后的结果,即在A存在,而在B不存在的记录。就是去除A表和B表的交集,对于B表存在而A表不存在...
  •  SQL有一个MINUS关键字,它运用在两个SQL语句上,它先找出第一条SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果 。如果有的话,那这一笔记录就被去除,而不会在最后的结果出现。如果第二个...
  • SQL中MINUS用法

    万次阅读 2018-11-16 14:10:57
    minus指令是运用在两个 SQL 语句上。它先找出第一个 SQL 语句所产生的结果,然后看这些结果有没有在第二个 SQL 语句的结果。如果有的话,那这一笔资料就被去除,而不会在最后的结果出现。...我们继续使用一...
  • 最近在写sql的时候用到了上面这几个,就整理下 union all/union 这个函数可以将俩结果集合并在一起 例:当你用到in的时候,而in只能跟1000的字段,这个时候就可以用 where 后面的条件不允许使用...minus 可用于...
  • Hive实现oracleMinus函数

    千次阅读 2014-10-08 19:46:21
    随着云计算和hadoop的发展,去IOA随之在各个行业开展起来。去o的过程必然涉及到一些sql用mr或hive改写的过程。本文就是在实际工作涉及到hive改造oracle存储过程时用hive实现minus函数。

空空如也

空空如也

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

oracle中minus的用法