`
小杨学JAVA
  • 浏览: 903985 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SQL语句中的三个关键字:MINUS(减去),INTERSECT(交集)和UNION ALL(并集);

 
阅读更多

 转:http://blog.csdn.net/gan690416372/article/details/5012397

SQL语句中的三个关键字:MINUS(减去),INTERSECT(交集)和UNION ALL(并集);

 

关于集合的概念,中学都应该学过,就不多说了.这三个关键字主要是对数据库的查询结果进行操作,正如其中文含义一样:两个查询,MINUS是从第一个查询结果减去第二个查询结果,如果有相交部分就减去相交部分;否则和第一个查询结果没有区别. INTERSECT是两个查询结果的交集,UNION ALL是两个查询的并集;

 

 虽然同样的功能可以用简单SQL语句来实现,但是性能差别非常大,有人做过实验:made_order共23万笔记录,charge_detail共17万笔记录:

    SELECT order_id FROM made_order
  MINUS
  SELECT order_id FROM charge_detail
耗时:1.14 sec
  
  SELECT a.order_id FROM made_order a
   WHERE a.order_id NOT exists (
     SELECT order_id
     FROM charge_detail
     WHERE order_id = a.order_id
   )
耗时:18.19 sec
性能相差15.956倍!因此在遇到这种问题的时候,还是用MINUS,INTERSECT和UNION ALL来解决问题,否则面对业务中随处可见的上百万数据量的查询,数据库服务器还不被咱玩的死翘翘?

PS:应用两个集合的相减,相交和相加时,是有严格要求的:1.两个集合的字段必须明确(用*就不行,报错);2.字段类型和顺序相同(名称可以不同),如:集合1的字段1是NUMBER,字段2是VARCHAR,那么集合2的字段1必须也是NUMBER,字段2必须是VARCHAR;3.不能排序,如果要对结果排序,可以在集合运算后,外面再套一个查询,然后排序,如前面的例子可以改成:

SELECT * FROM 
   (SELECT order_id FROM made_order
   MINUS
  SELECT order_id FROM charge_detail)
ORDER BY ORDER_ID ASC

分享到:
评论

相关推荐

    union,minus和intersect关系

    在数据库查询语言SQL中,`UNION`、`MINUS`和`INTERSECT`是三种用于合并或对比多个查询结果集的关键字,它们在数据处理和数据分析中扮演着重要的角色。下面,我们将深入探讨这三种操作符的概念、用法以及它们之间的...

    复习笔记SQL34句

    20. SQL语句(20) MINUS:返回第一个SELECT语句中存在,但不在第二个SELECT语句中的行。 21. SQL语句(21) Concatenate:用于连接两个或更多字符串,如`CONCAT(column1, column2) AS combined`。 22. SQL语句(22) ...

    Oracle集合操作函数union、intersect、minus.docx

    在上面的例子中,MINUS 操作符将第一个 SELECT 语句的结果与第二个 SELECT 语句的结果比较,只保留第一个结果集中存在,而第二个结果集中不存在的数据。 五、ORDER BY 排序 在使用集合操作符时,可以使用 ORDER BY...

    oracle集合union、union all、intersect、minus

    Oracle 集合操作是指在数据库中对数据进行集合运算的操作,包括 union、union all、intersect 和 minus 等操作。这些操作可以对数据进行合并、交叉、差异等处理,提高数据处理效率。 union 操作 Union 操作是将两...

    sql语句大全免费教程下载

    16. INTERSECT和MINUS:用于返回两个查询结果的交集和差集。 17. 字符串操作函数:如Concatenate(连接)、Substring(子字符串提取)、TRIM(去除空格)等,用于处理字符串数据。 18. 数据定义语言(DDL):包括...

    2022年SQL合并查询Intersect交集运算.pptx

    1. 只能合并两个表:Intersect运算符只能合并两个表,如果我们需要合并三个或更多表,需要使用其他方法。 2. 不能合并不同的数据库:Intersect运算符只能合并同一个数据库中的表,不能合并不同的数据库中的表。 ...

    SQL语句生成及分析器

    联合(Union,Union All,Minus,Intersect) 4、SQL语句反向分析 无论多么复杂的语句,都能分析出来(包括SQL各子句中嵌套的SQL语句) 5、数据库视图定义和重建 6、支持将SQL查询语句,替换为插入(Insert into)和更新...

    C_minus语言词法分析器

    C_minus语言的词法分析器是编译原理中的一个重要组成部分,它的主要任务是对源代码进行初步解析,识别出程序中的各种符号,将其转化为词法单元(Token),为后续的语法分析和语义分析阶段提供基础。词法分析器通常会...

    SQL语句教程.pdf

    UNION和UNION ALL用于合并两个或多个SELECT语句的结果集,并消除重复的行。UNION ALL会包含所有的结果,包括重复项。 举例:合并两个表中销售数据大于200的记录: ``` SELECT store_name, sales FROM store_info ...

    Sql中的MINUS

    在SQL语言中,MINUS操作符被用于从一个查询结果集中去除另一个查询结果集中的所有行。这通常用于找出两个数据集合之间的差异,即只存在于第一个查询但不在第二个查询中的记录。 #### 二、MINUS操作符的基本语法 ...

    java 版 编译原理实验 C_minus语言词法分析器的设计

    编译原理实验 C_minus语言词法分析器的设计 1、该个词法分析器要求至少能够识别以下几类单词: a. 关键字:else if int return void while共6个,所有的关键字都是保留字,并且必须是小写; b. 标识符:识别与...

    很详细的sql语句教程

    - 假设有一个名为 `Store_Information` 的表,其中包含三个列:`store_name`, `sales`, 和 `date`。 - 如果想要获取所有商店的名字,可以执行以下查询: ```sql SELECT store_name FROM Store_Information; ``` -...

    C_minus语言词法分析器的设计

    a. 关键字:else if int return void while共6个,所有的关键字都是保留字,并且必须是小写; b. 标识符:识别与C语言词法规定相一致的标识符,通过下列正则表达式定义:ID = letter (letter | digit)*; c. 常数...

    数据库sql语句精华

    集合操作包括`UNION`(并集), `INTERSECT`(交集) 和 `MINUS`(差集)。例如: ```sql SELECT * FROM Student WHERE sname = 'wang' UNION SELECT * FROM Student WHERE sage > 20; ``` 12. **插入数据**: - ...

    最易入门SQL语句教程

    **用途**:`INTERSECT` 运算符返回两个或更多 SELECT 语句的结果集的交集。 **基本语法**: ```sql SELECT column1, column2, ... FROM table1 INTERSECT SELECT column1, column2, ... FROM table2; ``` #### SQL...

    SQL语句自动生成器简体中文版

    支持几乎所有类型的数据库, 包括小型(桌面)数据库:Fox ...对于Oracle 支持Union All,Minus,Intersect) <br>支持将SQL查询语句,替换为插入(Insert into)和更新(Update)语句 附属工具内嵌入Delphi IDE

    Oracle: minus | in | exists

    在Oracle数据库中,`MINUS`、`IN` 和 `EXISTS` 是三种不同的SQL查询操作符,它们各自用于特定的数据处理场景。了解并熟练掌握这些操作符对于优化查询性能和编写复杂的SQL语句至关重要。 1. **MINUS 操作符** `MINUS...

    SQL语句自动生成工具

    支持几乎所有类型的数据库, 包括小型(桌面)数据库:Fox DBF...对于Oracle 支持Union All,Minus,Intersect) <br>支持将SQL查询语句,替换为插入(Insert into)和更新(Update)语句 附属工具内嵌入Delphi IDE

    数据库结构化查询语言SQL

    SQL查询中的逻辑运算符和谓词包括AND、OR、NOT进行逻辑判断,IN、NOT IN用于包含或排除特定值,EXISTS检查子查询是否存在结果,INTERSECT、UNION和MINUS分别用于集合的交集、并集和差集。 以图书管理关系数据模型为...

Global site tag (gtag.js) - Google Analytics