`
小杨学JAVA
  • 浏览: 900458 次
  • 性别: 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 ...

    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