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是按列进行比较的,所以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用法详解及应用实例相关推荐
- oracle中minus作的应用,Oracle minus用法详解及应用实例
Oracle minus用法详解及应用实例 Oracle minus用法 "minus"直接翻译为中文是"减"的意思,在Oracle中也是用来做减法操作的,只不 ...
- oracle minus 条件,Oracle minus用法详解及应用实例
Oracle minus用法 "minus"直接翻译为中文是"减"的意思,在Oracle中也是用来做减法操作的,只不过它不是传统意义上对数字的减法,而是对查询结 ...
- php theme_path,PHP_Yii2主题(Theme)用法详解,本文实例讲述了Yii2主题(Theme) - phpStudy
Yii2主题(Theme)用法详解 本文实例讲述了Yii2主题(Theme)用法.分享给大家供大家参考,具体如下: 首先看看主要的配置方式: 'components' => [ 'view' = ...
- android搜索功能xml,Android_Android ActionBar搜索功能用法详解,本文实例讲述了Android ActionBar - phpStudy...
Android ActionBar搜索功能用法详解 本文实例讲述了Android ActionBar搜索功能用法.分享给大家供大家参考,具体如下: 使用ActionBar SearchView时的注意 ...
- php android 复制粘贴板,Android_Android剪贴板用法详解,本文实例详述了Android剪贴板的 - phpStudy...
Android剪贴板用法详解 本文实例详述了Android剪贴板的用法,分享给大家供大家参考.具体方法分析如下: 这里首先需要注意的一点,就是在使用Android剪贴板的时候大家只记住一点就行了,不管 ...
- oracle 排序的分析函数,Oracle分析函数用法详解
OVER(PARTITION BY)开窗函数用法 开窗函数,Oracle从8.1.6开始提供开窗函数,开窗函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是: 对于每个组返回多行,而聚合函数对于 ...
- html5才有的标签是什么意思,html5header标签是什么意思?html5header标签的用法详解(附实例)-...
本篇文章主要的向大家介绍了关于html5 header标签的元素的基本介绍,和header标签的用法实例解析.下面就让我们一起来看看这篇关于html5 header标签的文章吧 一.首先我们来说说ht ...
- oracle sqlldr 用法详解
转自:http://blog.chinaunix.net/uid-23622436-id-2394093.html 在 Oracle 数据库中,我们通常在不同数据库的表间记录进行复制或迁移时会用以下几 ...
- select函数用法详解,及实例分析
select函数是系统调用函数,用于多路监控.当没有一个文件满足要求时,select将阻塞调用进程.在有些情况下,采用select函数可以大大简化程序结构.比如一个系统有10个输入设备,如果想实时读取 ...
- oracle数据库游标是什么意思,oracle数据库游标用法详解
oracle 游标用法详解 1.什么是游标 游标是一种PL/SQL控制结构,可以对SQL语句进行显示控制,便于对表的数据逐条进行处理 2.游标分类 显示游标: Declared and named b ...
最新文章
- Python编程语言基础入门教程
- 剑指Offer系列 重建二叉树
- Requested bean is currently in creation: Is there an unresolvable circular reference?
- 最长公共子序列_Java恶意序列化背后的历史和动机
- java-执行流程控制语句
- 电气论文:梯级水电站调度优化建模(文末有程序下载链接)
- Account group 0170 reserved for consumers
- linux数据包注释,关于 linux中TCP数据包(SKB)序列号的小笔记
- nginx nodejs环境配置_服务器环境配置安装(mysql+redis+nodejs+nginx)
- opencv-api filter2D
- IDEA如何添加项目启动参数
- 苹果mac窗口速调辅助工具:Magnet
- Windows server 2003 伪静态配置方法
- android贪吃蛇设计报告,贪吃蛇游戏报告毕业设计android
- 交换机入门书籍推荐_网络工程学习方法/路线/专业书籍推荐
- 菜鸟最初级网络安全常识
- react 类暴露_React 组件暴露自身 API 的方法
- typora上传图片出现Can‘t find smms config错误
- js 事件绑定传入自定义参数
- npm安装webpack时,报错npm WARN ajv-keywords@3.1.0 requires a peer of ajv@^6.0.0 but none is installed.
热门文章
- 麻省理工学院计算机博士几年,破译「罗塞塔石碑」要几十年?华裔MIT博士开发新系统,快速解密...
- 建筑力学与结构【9】
- 来,看看记事本里会变成乱码的字……不仅仅是“联通”而已……
- No Target connected Target DLL has been cancelled(电压问题记录)
- 【补遗】- OC学习小窍门及文件操作(归档)
- Mbps、Kbps、bps、kb、mb单位换算及区别
- 项目中Makefile写法的一种参考
- Unity Application Block 1.0系列(5): 使用BuildUp让已存在对象实例也支持依赖注入
- 手把手教你R语言CIBERSORT计算免疫浸润+Rproject的使用
- 浏览器主页被篡改劫持怎么办