minus的用法简介
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的用法简介相关推荐
- intersect的用法简介
intersect的用法简介 在Oracle中,"A minus B"用于将结果集B中含有的记录从结果集A中移除,即用于获取存在于结果集A中而不存在于结果集B中的记录:" ...
- MSSQL Sql加密函数 hashbytes 用法简介
原文:MSSQL Sql加密函数 hashbytes 用法简介 转自:http://www.maomao365.com/?p=4732 一.mssql sql hashbytes 函数简介 hashb ...
- Postman用法简介-Http请求模拟工具
Postman用法简介-Http请求模拟工具 在我们平时开发中,特别是需要与接口打交道时,无论是写接口还是用接口,拿到接口后肯定都得提前测试一下,这样的话就非常需要有一个比较给力的Http请求模拟工具 ...
- InputStreamReader 和 OutputStreamWriter类用法简介,及演示。
InputStreamReader 和 OutputStreamWriter类用法简介. 一.InputStreamReader类 InputStreamReader 将字节流转换为字符流.是字节流通 ...
- php中__FILE__常量用法简介
php中__FILE__常量用法简介 http://blog.csdn.net/xbei07/article/details/5616020#comments出处 1.php中的__FILE__常量返 ...
- java test 用法,pytest基本用法简介
1.安装pytest,打开dos窗口输入: pip install pytest 2.通过pycharm工具下载 3.创建pytest测试用例步骤 # 定义测试类 class testdivide: ...
- SAP Gateway与OData用法简介
本文将分别从基础原理和实际应用两个角度介绍SAP Gateway与OData相关的知识点. 1 相关的事务代码(t-code) SEGW - SAP Gateway Service Builder / ...
- Matlab中 intlinprog函数用法简介
Matlab中 intlinprog函数用法简介 本来想要自己亲手写一遍的,发现了一优质博文基本上跟我做过的例题大差不差,所以就直接放上链接. 参考链接 https://www.cnblogs.com ...
- Oracle SQL调优系列之no_unnest和unnest用法简介
Oracle调优之no_unnest和unnest用法简介 本博客介绍Oracle SQL调优的一种常用也是很实用的方法,也即/*+no_unnest */和/*+ unnest*/,介绍Oracle ...
- 安装bwa软件linux,bwa软件用法简介
本文全文摘抄于简书:bwa软件用法简介 仅用于方便个人学习,如有侵权,请提醒删除,谢谢 bwa 是一款将序列比对到参考基因组上的软件,包含了以下3种算法 BWA-backtrack BWA-SW BW ...
最新文章
- 小程序客服消息推送自动回复_如何让小程序客服消息根据用户输入关键词自动回复图片?...
- Swift之深入解析类和结构体的本质
- dbeaver 数据转化 mapping_Python机器学习实例:数据竞赛-足球运动员身价估计
- 卢克增加服务器,DNF卢克攻坚服务器优化:增加攻坚队频道,新跨区整合计划
- mongodb-java-driver基本用法
- php title 乱码,PHP发送UTF-8编码中文邮件标题乱码的解决
- python导入turtle报错_由于“未定义宽度错误”,我无法将turtle模块导入Python2.7.10...
- 说说如何在 Spring 框架中使用 SpEL 表达式
- 【NOI2002】银河英雄传说
- 使用Python进行描述性统计
- ASP.NET MVC系列 框架搭建(二)之仓储层的优化
- 转:多玩网总裁李学凌:在腾讯阴影下
- 图片裁剪,合成(设置透明背景)
- 一键加速索尼相机SD卡文件的复制操作,文件操作批处理教程
- 「我的microNome组学分析流程」第1版
- linux软件管理及软件仓库
- CSDN20181218博客黑板报
- 抖音小店入驻精选联盟有什么条件?精选联盟添加商品操作流程分享
- python安装cfgrib读取grib数据
- 什么是数据库中的一对一关系?
热门文章
- 计算机网络.第三节课.笔记.信道复用、频分复用、统计时分复用、波分复用、时分复用、码分复用、双绞线带宽、双绞线
- 店宝宝:10年前的小游戏集体复活
- JavaScript验证邮箱格式是否正确
- ansible-playbook 通过mail模块发送邮件
- LEARNING ACTIONABLE REPRESENTATIONS WITH GOAL-CONDITIONED POLICIES
- Word怎么设置背景计算机二级,20个计算机二级word处理技巧!
- Python参考文献
- 科学与信息化杂志科学与信息化杂志社科学与信息化编辑部2022年第15期目录
- Python语言程序设计基础_序列型数据和控制结构综合练习(第七周)_答案_通识教育必修课程_上海师范大学
- Linux开发环境——SCL软件集