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

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

    在使用`MINUS`时,有几个关键点需要注意: 1. **相同列数和数据类型**:A和B必须具有相同的列数,并且对应列的数据类型必须兼容。这是因为在比较时,Oracle会根据列的顺序和类型进行匹配。 2. **去重**:`MINUS`...

    使用MINUS实现差值运算.rar

    3. **空值处理**:MINUS会忽略两个查询结果中的空值,如果你希望包含空值,可能需要使用其他方法,如UNION或INTERSECT操作。 总之,SQL中的MINUS操作符是一种强大的数据处理工具,可以帮助我们有效地处理数据集的...

    union,minus和intersect关系

    1. **列数和类型**:在使用`UNION`、`INTERSECT`和`MINUS`时,所有`SELECT`语句必须有相同数量的列,并且这些列的顺序和数据类型也必须相同。 2. **NULL值**:`UNION`和`INTERSECT`将所有NULL值视为相同的值,而`...

    C-minus语法分析 C语言编写

    3. **LR或LL解析**:语法分析通常使用自底向上的LR(左到右,右most衍生)或自顶向下的LL(左到右,左most解析)方法。C-minus的简单性可能使得LR或LL解析策略更为适用。LR分析器从右端符号开始,逐步构建语法树;而...

    Oracle: minus | in | exists

    然而,这取决于具体的数据分布和索引策略,因此在实际应用中,应根据具体情况选择最适合的方法。 5. **在源码和工具中的应用** 在源码开发和数据库工具中,这些操作符常用于数据分析、数据迁移、数据清理等任务。...

    PyPI 官网下载 | minus80-0.3.3.tar.gz

    "云原生"(Cloud Native)则是一种构建和运行应用程序的方法,它强调微服务、容器化、声明式API和持续交付,以实现快速、灵活和可靠的云环境部署。 考虑到minus80与Zookeeper的关联,这个库可能提供了与Zookeeper...

    c-minus词法分析器

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

    Java编写的C-minus词法和语法分析器

    在这个项目中,采用的是LL(1)解析技术,这是一种自左至右的预测解析方法,"1"代表使用当前输入符号和第一个文法项进行预测。LL(1)解析器生成的是一个从输入符号串到抽象语法树(AST)的映射。抽象语法树是源代码结构...

    TimeMinus - 简单时间差计算工具

    毫秒,可以使用`DateTime`结构的`ParseExact`或`TryParseExact`方法将其转换为`DateTime`对象。然后,通过减法操作就可以得到`TimeSpan`结果,表示两个时间点之间的时间差。例如: ```csharp string time1Str = "05...

    rownum用法(不使用minus)

    ### rownum用法详解 #### 一、rownum基本概念 `rownum` 是 Oracle 数据库中的一个特殊字段,主要用于给查询结果...掌握 `rownum` 的正确使用方法有助于更高效地进行数据库操作,尤其是在需要进行分页查询的情况下。

    C-minus 词法分析程序设计

    提供的源代码中,使用了C++的`fstream`库来处理文件输入输出,`iostream.h`、`string.h`和`fstream.h`头文件被包含。`main`函数中定义了保留字数组`word`和对应的符号名数组`wsym`。程序通过循环读取源文件中的字符...

    词法分析-C-Minus代码.zip_C-Minus_词法分析-C-Minus代码_词法分析实验

    在C++中,通常会定义一个词法分析器类,包含一个或多个方法来读取输入字符流,识别记号并生成相应的记号对象。 2. `WFtoNFA.cpp`:这个文件涉及到正则表达式到非确定有限状态自动机(NFA)的转换。词法分析通常会用...

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

    在SQL查询中,`INTERSECT` 和 `MINUS` 是两种用于集合操作的运算符,它们在某些数据库系统如PostgreSQL、Oracle等中被广泛使用。然而,MySQL并不直接支持这两种运算符,但可以通过一些替代策略来实现类似的功能。...

    C Minus Compiler 表驱动方式词法分析

    对于C Minus这种简单的编程语言,使用表驱动方式进行词法分析是一种常见的方法。本文将深入探讨C Minus Compiler如何利用表驱动技术进行词法分析,并结合DFA(确定有限状态自动机)转换图和状态转换表来解释这个过程...

    MySQL中对于not in和minus使用的优化

    在MySQL数据库中,`NOT IN` 和 `MINUS` 是两种常用的子查询操作,用于从结果集中排除特定的行。然而,这些操作在某些情况下可能会导致性能问题,特别是在处理大量数据时。本篇文章将探讨如何对这两种操作进行优化,...

    C-Minus词法分析和语法分析设计编译器编译原理课程设计

    词法分析的设计思路是使用 Top-Down 解析方法,使用递归下降解析来实现语法分析。词法分析的主要步骤是: 1. 读取 Token 序列 2. 语法分析,使用 Top-Down 解析方法 3. 输出语法树 词法分析的设计思想是基于 Top-...

    C_minus语言词法分析器的设计

    在实现C_minus的词法分析器时,可以使用正则表达式来定义各种标记的模式,然后使用诸如 Lex 或 Flex 这样的工具自动生成词法分析器代码。另一种方法是手动编写词法分析器,这需要更深入地理解字符处理和状态机的概念...

    MySQL实现差集(Minus)和交集(Intersect)测试报告

    MySQL数据库在标准SQL语法中并未直接提供`...总的来说,虽然MySQL本身不支持`MINUS`和`INTERSECT`,但通过使用其他SQL构造,我们可以实现相同的功能。这展示了SQL的灵活性,以及开发者如何适应不同的数据库系统特性。

    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 " ) ...

    编译原理课程设计:自制C-(C-minus)语言编译器,实现词法分析和语法分析。.zip

    语法分析通常使用上下文无关文法(CFG)进行,可以采用自底向上或自顶向下的方法,如LL解析或LR解析。 在这个课程设计中,你可能会使用类似Flex和Bison的工具来实现词法分析器和语法分析器。Flex是一个用于生成词法...

Global site tag (gtag.js) - Google Analytics