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表中不存在的记录。

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

minus的用法简介相关推荐

  1. intersect的用法简介

    intersect的用法简介 在Oracle中,"A minus B"用于将结果集B中含有的记录从结果集A中移除,即用于获取存在于结果集A中而不存在于结果集B中的记录:" ...

  2. MSSQL Sql加密函数 hashbytes 用法简介

    原文:MSSQL Sql加密函数 hashbytes 用法简介 转自:http://www.maomao365.com/?p=4732 一.mssql sql hashbytes 函数简介 hashb ...

  3. Postman用法简介-Http请求模拟工具

    Postman用法简介-Http请求模拟工具 在我们平时开发中,特别是需要与接口打交道时,无论是写接口还是用接口,拿到接口后肯定都得提前测试一下,这样的话就非常需要有一个比较给力的Http请求模拟工具 ...

  4. InputStreamReader 和 OutputStreamWriter类用法简介,及演示。

    InputStreamReader 和 OutputStreamWriter类用法简介. 一.InputStreamReader类 InputStreamReader 将字节流转换为字符流.是字节流通 ...

  5. php中__FILE__常量用法简介

    php中__FILE__常量用法简介 http://blog.csdn.net/xbei07/article/details/5616020#comments出处 1.php中的__FILE__常量返 ...

  6. java test 用法,pytest基本用法简介

    1.安装pytest,打开dos窗口输入: pip install pytest 2.通过pycharm工具下载 3.创建pytest测试用例步骤 # 定义测试类 class testdivide: ...

  7. SAP Gateway与OData用法简介

    本文将分别从基础原理和实际应用两个角度介绍SAP Gateway与OData相关的知识点. 1 相关的事务代码(t-code) SEGW - SAP Gateway Service Builder / ...

  8. Matlab中 intlinprog函数用法简介

    Matlab中 intlinprog函数用法简介 本来想要自己亲手写一遍的,发现了一优质博文基本上跟我做过的例题大差不差,所以就直接放上链接. 参考链接 https://www.cnblogs.com ...

  9. Oracle SQL调优系列之no_unnest和unnest用法简介

    Oracle调优之no_unnest和unnest用法简介 本博客介绍Oracle SQL调优的一种常用也是很实用的方法,也即/*+no_unnest */和/*+ unnest*/,介绍Oracle ...

  10. 安装bwa软件linux,bwa软件用法简介

    本文全文摘抄于简书:bwa软件用法简介 仅用于方便个人学习,如有侵权,请提醒删除,谢谢 bwa 是一款将序列比对到参考基因组上的软件,包含了以下3种算法 BWA-backtrack BWA-SW BW ...

最新文章

  1. 小程序客服消息推送自动回复_如何让小程序客服消息根据用户输入关键词自动回复图片?...
  2. Swift之深入解析类和结构体的本质
  3. dbeaver 数据转化 mapping_Python机器学习实例:数据竞赛-足球运动员身价估计
  4. 卢克增加服务器,DNF卢克攻坚服务器优化:增加攻坚队频道,新跨区整合计划
  5. mongodb-java-driver基本用法
  6. php title 乱码,PHP发送UTF-8编码中文邮件标题乱码的解决
  7. python导入turtle报错_由于“未定义宽度错误”,我无法将turtle模块导入Python2.7.10...
  8. 说说如何在 Spring 框架中使用 SpEL 表达式
  9. 【NOI2002】银河英雄传说
  10. 使用Python进行描述性统计
  11. ASP.NET MVC系列 框架搭建(二)之仓储层的优化
  12. 转:多玩网总裁李学凌:在腾讯阴影下
  13. 图片裁剪,合成(设置透明背景)
  14. 一键加速索尼相机SD卡文件的复制操作,文件操作批处理教程
  15. 「我的microNome组学分析流程」第1版
  16. linux软件管理及软件仓库
  17. CSDN20181218博客黑板报
  18. 抖音小店入驻精选联盟有什么条件?精选联盟添加商品操作流程分享
  19. python安装cfgrib读取grib数据
  20. 什么是数据库中的一对一关系?

热门文章

  1. 计算机网络.第三节课.笔记.信道复用、频分复用、统计时分复用、波分复用、时分复用、码分复用、双绞线带宽、双绞线
  2. 店宝宝:10年前的小游戏集体复活
  3. JavaScript验证邮箱格式是否正确
  4. ansible-playbook 通过mail模块发送邮件
  5. LEARNING ACTIONABLE REPRESENTATIONS WITH GOAL-CONDITIONED POLICIES
  6. Word怎么设置背景计算机二级,20个计算机二级word处理技巧!
  7. Python参考文献
  8. 科学与信息化杂志科学与信息化杂志社科学与信息化编辑部2022年第15期目录
  9. Python语言程序设计基础_序列型数据和控制结构综合练习(第七周)_答案_通识教育必修课程_上海师范大学
  10. Linux开发环境——SCL软件集