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用法详解及应用实例相关推荐

  1. oracle中minus作的应用,Oracle minus用法详解及应用实例

    Oracle minus用法详解及应用实例 Oracle minus用法 "minus"直接翻译为中文是"减"的意思,在Oracle中也是用来做减法操作的,只不 ...

  2. oracle minus 条件,Oracle minus用法详解及应用实例

    Oracle minus用法 "minus"直接翻译为中文是"减"的意思,在Oracle中也是用来做减法操作的,只不过它不是传统意义上对数字的减法,而是对查询结 ...

  3. php theme_path,PHP_Yii2主题(Theme)用法详解,本文实例讲述了Yii2主题(Theme) - phpStudy

    Yii2主题(Theme)用法详解 本文实例讲述了Yii2主题(Theme)用法.分享给大家供大家参考,具体如下: 首先看看主要的配置方式: 'components' => [ 'view' = ...

  4. android搜索功能xml,Android_Android ActionBar搜索功能用法详解,本文实例讲述了Android ActionBar - phpStudy...

    Android ActionBar搜索功能用法详解 本文实例讲述了Android ActionBar搜索功能用法.分享给大家供大家参考,具体如下: 使用ActionBar SearchView时的注意 ...

  5. php android 复制粘贴板,Android_Android剪贴板用法详解,本文实例详述了Android剪贴板的 - phpStudy...

    Android剪贴板用法详解 本文实例详述了Android剪贴板的用法,分享给大家供大家参考.具体方法分析如下: 这里首先需要注意的一点,就是在使用Android剪贴板的时候大家只记住一点就行了,不管 ...

  6. oracle 排序的分析函数,Oracle分析函数用法详解

    OVER(PARTITION BY)开窗函数用法 开窗函数,Oracle从8.1.6开始提供开窗函数,开窗函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是: 对于每个组返回多行,而聚合函数对于 ...

  7. html5才有的标签是什么意思,html5header标签是什么意思?html5header标签的用法详解(附实例)-...

    本篇文章主要的向大家介绍了关于html5 header标签的元素的基本介绍,和header标签的用法实例解析.下面就让我们一起来看看这篇关于html5 header标签的文章吧 一.首先我们来说说ht ...

  8. oracle sqlldr 用法详解

    转自:http://blog.chinaunix.net/uid-23622436-id-2394093.html 在 Oracle 数据库中,我们通常在不同数据库的表间记录进行复制或迁移时会用以下几 ...

  9. select函数用法详解,及实例分析

    select函数是系统调用函数,用于多路监控.当没有一个文件满足要求时,select将阻塞调用进程.在有些情况下,采用select函数可以大大简化程序结构.比如一个系统有10个输入设备,如果想实时读取 ...

  10. oracle数据库游标是什么意思,oracle数据库游标用法详解

    oracle 游标用法详解 1.什么是游标 游标是一种PL/SQL控制结构,可以对SQL语句进行显示控制,便于对表的数据逐条进行处理 2.游标分类 显示游标: Declared and named b ...

最新文章

  1. Python编程语言基础入门教程
  2. 剑指Offer系列 重建二叉树
  3. Requested bean is currently in creation: Is there an unresolvable circular reference?
  4. 最长公共子序列_Java恶意序列化背后的历史和动机
  5. java-执行流程控制语句
  6. 电气论文:梯级水电站调度优化建模(文末有程序下载链接)
  7. Account group 0170 reserved for consumers
  8. linux数据包注释,关于 linux中TCP数据包(SKB)序列号的小笔记
  9. nginx nodejs环境配置_服务器环境配置安装(mysql+redis+nodejs+nginx)
  10. opencv-api filter2D
  11. IDEA如何添加项目启动参数
  12. 苹果mac窗口速调辅助工具:Magnet
  13. Windows server 2003 伪静态配置方法
  14. android贪吃蛇设计报告,贪吃蛇游戏报告毕业设计android
  15. 交换机入门书籍推荐_网络工程学习方法/路线/专业书籍推荐
  16. 菜鸟最初级网络安全常识
  17. react 类暴露_React 组件暴露自身 API 的方法
  18. typora上传图片出现Can‘t find smms config错误
  19. js 事件绑定传入自定义参数
  20. npm安装webpack时,报错npm WARN ajv-keywords@3.1.0 requires a peer of ajv@^6.0.0 but none is installed.

热门文章

  1. 麻省理工学院计算机博士几年,破译「罗塞塔石碑」要几十年?华裔MIT博士开发新系统,快速解密...
  2. 建筑力学与结构【9】
  3. 来,看看记事本里会变成乱码的字……不仅仅是“联通”而已……
  4. No Target connected Target DLL has been cancelled(电压问题记录)
  5. 【补遗】- OC学习小窍门及文件操作(归档)
  6. Mbps、Kbps、bps、kb、mb单位换算及区别
  7. 项目中Makefile写法的一种参考
  8. Unity Application Block 1.0系列(5): 使用BuildUp让已存在对象实例也支持依赖注入
  9. 手把手教你R语言CIBERSORT计算免疫浸润+Rproject的使用
  10. 浏览器主页被篡改劫持怎么办