Oracle Minus 取差集

Oracle Minuskeyword

  SQL中的MINUSkeyword

  SQL中有一个MINUSkeyword,它运用在两个SQL语句上,它先找出第一条SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果中。假设有的话,那这一笔记录就被去除,而不会在最后的结果中出现。假设第二个SQL语句所产生的结果并没有存在于第一个SQL语句所产生的结果内,那这笔资料就被抛弃,其语法例如以下:

  [SQL Segment 1]

  MINUS

  [SQL Segment 2]

--------------------------------------------

//创建表1

create table test1

(

name varchar(10),

sex varchar(10),

);

insert into test1 values(‘test‘,‘female‘);

insert into test1 values(‘test1‘,‘female‘);

insert into test1 values(‘test1‘,‘female‘);

insert into test1 values(‘test11‘,‘female‘);

insert into test1 values(‘test111‘,‘female‘);

//创建表2

create table test2

(

name varchar(10),

sex varchar(10),

);

insert into test1 values(‘test‘,‘female‘);

insert into test1 values(‘test2‘,‘female‘);

insert into test1 values(‘test2‘,‘female‘);

insert into test1 values(‘test22‘,‘female‘);

insert into test1 values(‘test222‘,‘female‘);

-------------------------------------------

select * from test1 minus select * from test2;

结果:

NAME       SEX

---------- ----------

test1      female

test11     female

test111    female

-----------------------------------------------------------

select * from test2 minus select * from test1;

结果:

NAME       SEX

---------- ----------

test2      female

test22     female

test222    female

结论:Minus返回的总是左边表中的数据,它返回的是差集。注意:minus有剃重作用

==========================================================

 以下是我做的实验,非常明显可以看出MINUS的效率,made_order共23万笔记录,charge_detail共17万笔记录

性能比較:

  SELECT order_id FROM made_order

  MINUS

  SELECT order_id FROM charge_detail

  1.14 sec

  

  SELECT a.order_id FROM made_order a

  WHERE NOT exists (

   SELECT order_id

   FROM charge_detail

   WHERE order_id = a.order_id

   )

  18.19 sec

  

  SELECT order_id FROM made_order

  WHERE order_id NOT in (

   SELECT order_id

   FROM charge_detail

   )

  20.05 sec

  

  还有其他一下keyword:

  INTERSECT (交集)

  UNION ALL 并集

Oracle Minus 取差集,布布扣,bubuko.com

时间: 2024-10-29 01:00:06

Oracle Minus 取差集的相关文章

oracle中取交集、差集和并集的语法

这里简单总结下在Oracle中取交集.差集和并集的语法. 交集:INTERSECT(适用于两个结果集) SELECT ID, NAME FROM YANGGB1 INTERSECT SELECT ID, NAME FROM YANGGB2 差集:MINUS(适用于两个结果集) SELECT ID, NAME FROM YANGGB1 MINUS SELECT ID, NAME FROM YANGGB2 并集:UNION或UNION ALL(适用于两个结果集) -- 不包括重复行,进行默认排序 S

Oracle Minus关键字

Oracle Minus关键字 SQL中的MINUS关键字 SQL中有一个MINUS关键字,它运用在两个SQL语句上,它先找出第一条SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果 中.如果有的话,那这一笔记录就被去除,而不会在最后的结果中出现.如果第二个SQL语句所产生的结果并没有存在于第一个SQL语句所产生的结果内,那这 笔资料就被抛弃,其语法如下: [SQL Segment 1] MINUS [SQL Segment 2]------------------------

问题:oracle floor;结果:Oracle的取整和四舍五入函数——floor,round,ceil,trunc使用说明

Oracle的取整和四舍五入函数——floor,round,ceil,trunc使用说明 (2011-04-06 16:10:35) 转载▼ 标签: 谈 分类: 渐行渐远 FLOOR——对给定的数字取整数位 SQL> select floor(2345.67) from dual; FLOOR(2345.67) -------------- 2345 CEIL-- 返回大于或等于给出数字的最小整数 SQL> select ceil(3.1415927) from dual; CEIL(3.14

关于 js 2个数组取差集怎么取

关于 js 2个数组取差集怎么取? 例如求var arr1 = [1]; var arr2 = [1,2];的差集方法一: 1 Array.prototype.diff = function(a) { 2 return this.filter(function(i) {return a.indexOf(i) < 0;}); 3 }; 4 [1,2].diff([1]);//[2] 方法二: 1 var isNaN = Number.isNaN; 2 var difference = functi

Oracle分组取第一条数据

看看以前的私密日志,原来自己之前被很多小而简单的问题困惑过! 看着那时候我们还是新手中的新手做的备忘笔记! 其实就是用了Oracle的统计函数而已! 以前的日记(看样子应该是以前公司的源码,呵呵--)如下:勿喷! 对多数据进行分组排序后取每组第一条记录: SELECT * FROM ( SELECT ROW_NUMBER() OVER( PARTITION BY ZA40011_3.URIAGE_DENPYO_NO,ZA40011_3.URIAGE_DENPYO_ROW_NO ORDER BY

Oracle的取整和四舍五入函数——floor,round,ceil,trunc使用说明

Oracle的取整和四舍五入函数——floor,round,ceil,trunc使用说明 FLOOR——对给定的数字取整数位SQL> select floor(2345.67) from dual; FLOOR(2345.67)--------------2345 CEIL-- 返回大于或等于给出数字的最小整数SQL> select ceil(3.1415927) from dual; CEIL(3.1415927)---------------              4 ROUND——按

Oracle minus用法详解及应用实例

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

oracle中minus取差值

minus运算的主要功能是: 在进行两个表格或者两个查询结果的时候 ,返回在第一个表格/查询结果中与第二个表格/查询结果不相同的记录. 比如: 第一张表COURSE_HOMEWORK_RECORD里REPLY_AFFIX 第二张表RESOURCES_MAPPING_NEW里FILE_ID 返回:三条不重复的数据. 比如:  结论:Minus返回的总是第一张表中的数据,它返回的是差集.注意:minus有去重作用. 转载请注明:张不盹博客 http://my.oschina.net/zhangbud

oracle中取前几条数据&amp;TRUNC()函数

在oracle中查表中的前10条数据---- select * from test where rownum <= 10 ;  rownum是把SQL出来的结果进行编号,始终从1开始,常见的用途就是用来分页.类似于MYSQL和SQL SERVER的top. select * from (select a.*,rownum rn from test a) where rn >=10 and rn<=20; 输出10到20条语句.因为rownum本身只能用<=的比较方式,只有转成实例才