`
234390216
  • 浏览: 10194283 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A5ee55b9-a463-3d09-9c78-0c0cf33198cd
Oracle基础
浏览量:460821
Ad26f909-6440-35a9-b4e9-9aea825bd38e
springMVC介绍
浏览量:1771877
Ce363057-ae4d-3ee1-bb46-e7b51a722a4b
Mybatis简介
浏览量:1395481
Bdeb91ad-cf8a-3fe9-942a-3710073b4000
Spring整合JMS
浏览量:393917
5cbbde67-7cd5-313c-95c2-4185389601e7
Ehcache简介
浏览量:678253
Cc1c0708-ccc2-3d20-ba47-d40e04440682
Cas简介
浏览量:529320
51592fc3-854c-34f4-9eff-cb82d993ab3a
Spring Securi...
浏览量:1178774
23e1c30e-ef8c-3702-aa3c-e83277ffca91
Spring基础知识
浏览量:462010
4af1c81c-eb9d-365f-b759-07685a32156e
Spring Aop介绍
浏览量:150169
2f926891-9e7a-3ce2-a074-3acb2aaf2584
JAXB简介
浏览量:66890
社区版块
存档分类
最新评论

minus的用法简介

阅读更多

minus的用法简介

 

       minus”直接翻译为中文是“减”的意思,在Oracle中也是用来做减法操作的,只不过它不是传统意义上对数字的减法,而是对查询结果集的减法。A minus B就意味着将结果集A去除结果集B中所包含的所有记录后的结果,即在A中存在,而在B中不存在的记录。其算法跟Java中的CollectionremoveAll()类似,即A minus B将只去除AB的交集部分,对于B中存在而A中不存在的记录不会做任何操作,也不会抛出异常。

       Oracleminus是按列进行比较的,所以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;

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    Oracle minus用法详解及应用实例

    主要介绍了Oracle minus用法详解及应用实例的相关资料,这里对oracle minus的用法进行了具体实例详解,需要的朋友可以参考下

    Sql中的MINUS

    此资源为.txt文件,里面描述了sql中minus的使用方法和案例,如果需要可以下载

    c-minus词法分析器

    这个规则导致了典型的悬挂e l s e二义性,可以用一种标准的方法解决:e l s e部分通常作为当前i f的一个子结构立即分析(“最近嵌套”非二义性规则)。 16. iteration_stmt -&gt; while ( expression ) statement w h i l...

    rownum用法(不使用minus)

    仅仅使用select语句就可以完成分页,学习一下rownum 会有用处的

    minus:Clojure 数据的 Diffingpatching

    用法 user&gt; ( require '[com.gfredericks.minus :as minus]) nil user&gt; ( def the-data { :foo 12 , :bar [ 1 2 3 ]}) #'user/the-data user&gt; ( def the-different-data ( -&gt; the-data ( assoc :bam " okay " ) ...

    MySQL不支持INTERSECT和MINUS及其替代方法

    Doing INTERSECT and MINUS in MySQL Doing an INTERSECT An INTERSECT is simply an inner join where we compare the tuples of one table with those of the other, and select those that appear in both while ...

    菜单栏::minus:用电子方式创建菜单栏桌面应用程序的高级方法

    使用Electron创建菜单栏桌面应用程序的高级方法。 该模块提供样板,用于使用Electron设置菜单栏应用程序。 您所要做的只是将其指向index.html , menubar将处理其余部分。 :check_mark_button: 仅一种依赖性和一...

    lib-tminus.js:一个轻量级的浏览器倒计时库

    假设以下功能在目标浏览器中可用: (由) (由) 使用了以下功能,但在库中嵌入了回退: - 如果 requestAnimationFrame 不可用,则将使用基于 setInterval 的方法作为后备。 - 项目中包含class-list 。独立使用...

    Musk数据集 使用PCA和SVD方法进行特征提取 并报告获得的特征值以及特征向量结果

    在此数据集上分别使用PCA和SVD方法进行特征提取,并报告获得的特征值以及特征向量结果,对数据属性进行分析,使用盒图分别对获得的最优属性进行分析和对比。 import pandas as pd import os from numpy import * ...

    编译原理语法分析 LL1分析代码

    编译原理 从词法分析器到语法分析器的实现,词法分析器以有穷状态机实现,而语法分析器主要使用LL1算法实现,中间使用了大量的图论算法。

    jQuery插件开发的两种方法及$.fn.extend的详解

    开发扩展其方法时使用$.extend方法,即jQuery.extend(object); 代码如下: $.extend({ add:function(a,b){return a+b;} , minus:function(a,b){return a-b;} }); 页面中调用: 代码如下: var i = $.add(3,2); var j ...

    SimpleMvcCaptcha验证码 v1.2源码2012519

    ASP.NET MVC 3简单算数表达式生成验证码,使用 HtmlHelper扩展方法。没有使用WCF等。使用C#编写。 关键特性: 验证码为简单的数学运算 随机替换预先定义的文本(+为plus,-为minus) 文本颜色随机改变 代码中没有开放...

    react-number-control:零样式仅功能数字控制React组件

    NumberControl max = { 4 } min = { 0 } value = { 0 } onChange = { fn } onReject = { fn } className = 'user-supplied-main-class' childClasses = { { minus : 'user-supplied-minus-class' , num : 'user-...

    chartjs-plugin-error-bars:错误条Chart.js插件

    安装npm install --save chart.js chartjs-plugin-error-bars用法数据集必须定义一个errorBars对象,该对象包含错误栏属性键(与使用的刻度相同)以及值plus和minus 。 加值始终为正,反之亦然。 分类量表的用法: ...

    kakoune-idris:适用于Kakoune的Idris 2 IDE协议集成

    Kakoune 编辑器的 Idris 突出显示和 IDE 操作 安装 确保安装了 NodeJS 和 。...用法 有关示例项目,请参阅tests/目录 # The plugin expects the "*.ipkg" file to be in the same folder as the "src" dir

    Python 使用生成器代替线程的方法

    问题 你想使用生成器(协程)替代系统线程来实现并发。这个有时又被称为用户级线程或绿色线程。 解决方案 要使用生成器实现自己的并发,你首先要对生成器函数和 yield 语句有深刻理解。... print('T-minus', n) yield

    Oracle_Database_11g完全参考手册.part3/3

    12.1 groupby和having的用法 12.1.1 添加一个orderby 12.1.2 执行顺序 12.2 分组视图 12.3 用别名重命名列 12.4 分组视图的功能 12.4.3 对列和分组函数进行排序 12.4.4 连接列 12.5 更多分组可能性 第13章 当一个...

    Oracle Database 11g初学者指南--详细书签版

    3.5.9 使用哪种命名方法 62 3.6 使用Oracle配置文件 63 3.7 使用管理工具 64 3.7.1 OEM/网格控件 64 3.7.2 Oracle网络管理器 64 3.7.3 OEM控制台 65 3.7.4 OEM组件 65 3.7.5 Oracle网络配置助手 65 3.7.6 ...

    Oracle_Database_11g完全参考手册.part2/3

    12.1 groupby和having的用法 12.1.1 添加一个orderby 12.1.2 执行顺序 12.2 分组视图 12.3 用别名重命名列 12.4 分组视图的功能 12.4.3 对列和分组函数进行排序 12.4.4 连接列 12.5 更多分组可能性 第13章 当一个...

    3个可用的测试报告HTMLTestRunner 带饼状图 .zip

    # 使用这种方法可以对测试用例排序 # tests = [TestMathFunc("test_add"), TestMathFunc("test_minus"), TestMathFunc("test_divide")] # suite.addTests(tests) # 使用TestLoader的方法传入TestCase suite....

Global site tag (gtag.js) - Google Analytics