首页 >数据库 >mysql教程 >Oracle Minus关键字

Oracle Minus关键字

WBOY
WBOY原创
2016-06-07 15:45:481235浏览

OracleMinus 关键字 //创建表1 create table test1 ( name varchar(10), sex varchar(10),age int );插入 test1values('luxin','female',25);插入 test1 值('tom','female',26);插入 test1 值('mary1','male',27);插入我

Oracle 减号

//创建表1

创建表 test1

 名称 varchar(10),
 性别 varchar(10),
 年龄
);

插入 test1values('luxin','female',25);
插入 test1 值('tom','female',26);
插入 test1 值('mary1','male',27);
插入 test1 值('money','male',27);
插入 test1 值('tony','male',28);
插入 test1 值('tony1','male',19);

 

//创建表2
创建表 test2

 名称 varchar(10),
 性别 varchar(10),
 年龄
);

 

插入test2值('luxin','female',25);
插入 test2 值('tom','female',26);
插入 test2 值('mary2','male',27);
插入 test2 value('money','male',27);
插入 test2 值('tony','male',28);
插入 test2 值('tony2','male',19);

 

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

从测试1中选择*减去从测试2中选择*;

结果:

姓名      性别              年龄
---------- ---------- ----------
玛丽1                  27
tony1                  19

 

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

从 test2 中选择 * 减去从 test1 中选择 *;

结果:

姓名      性别              年龄
---------- ---------- ----------
玛丽2                  27
tony2                  19

 

结论:减去的总是返回左边表中的数据,它返回的是差集。

用表1-表2中的数据,如果相同,则去掉,否则返回表1中的数据。

 

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

今天在看数据集合的时候偶然看到了SQL有MINUS,可以达到相同的目的
  具体如下:
  SQL中的MINUS关键字
  SQL中有一个MINUS关键字,它调用在两个SQL语句上,它先查找第一条SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果中。如果有的话,那这一笔记录就被移除,而不会在最后的结果中出现。如果第二个SQL语句所产生的结果并没有存在于第一个SQL语句所产生的结果内,那一天的数据就被抛弃了,其语法如下:
  [SQL 段 1]
  减号
  [SQL 段 2]
  其实简单的一句话就是查找第一条SQL查询的不在第二条SQL语句查询结果中的那些记录,并且要注意最后返回的结果集中,不同的记录只能被排序一次!
  下面是我做的实验,很明显能够看出MINUS的效率,made_order共23万笔记录,charge_detail共17万笔记录

 

性能比较:
  从 made_order 中选择 order_id
  减号
  从 charge_detail 中选择 order_id
 ​1.14 秒

  从 made_order a
中选择 a.order_id   不存在的地方 (
   选择 1
   来自 charge_detail
   WHERE order_id = a.order_id
   )
  18.19 秒
  
  从 made_order 中选择 order_id
  WHERE order_id 不在 (
   选择订单 ID
   来自 charge_detail
   )
  20.05 秒
  
  还有其他一些关键字:
  INTERSECT (交集)
  UNION ALL 并集
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn