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

    union,minus和intersect关系

    sql语句生成器+支持各大数据库+说明书

    SQL语句生成器的特色 支持几乎所有类型的数据库, ...联合(Union,对于Oracle 支持Union All,Minus,Intersect) 支持将SQL查询语句,替换为插入(Insert into)和更新(Update)语句  附属工具内嵌入Delphi IDE

    C_minus语言词法分析器

    C_minus语言词法分析器 源代码a. 关键字:else if int return void while共6个,所有的关键字都是保留字,并且必须是小写

    SQL语句生成及分析器

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

    Oracle中的Union、Union_All、Intersect、Minus

    Oracle中的Union、Union_All、Intersect、Minus

    oracle集合union、union all、intersect、minus

    oracle集合union、union all、intersect、minus

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

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

    C_minus语言词法分析器的设计

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

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

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

    SQL语句自动生成工具

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

    SQL语句生成及分析器(中文绿色)

    3.8 联合 (Union [All],Minus,Intersect) 3.9 字段别名,数据表别名 3.10 SQL子查询表,内嵌SQL子句 4、粘贴字段、系统函数 5、SQL查询语句反向分析, 无论多么复杂的语句,都能分析得出来 包括上面提到...

    复习笔记SQL34句

    SQL语句(18) UNION ALL 6 SQL语句(19) INTERSECT 7 SQL语句(20) MINUS 7 SQL语句(21) Concatenate 8 SQL语句(22) Substring 8 SQL语句(23) TRIM 9 SQL语句(24) Create Table 9 SQL语句(25) Create View 9 SQL语句(26...

    SQL语言生成器(delphi)

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

    sql语句生成与分析器.rar

    3.8 联合 (Union [All],Minus,Intersect) 3.9 字段别名,数据表别名 3.10 SQL子查询表,内嵌SQL子句 4、粘贴字段、系统函数 5、SQL查询语句反向分析, 无论多么复杂的语句,都能分析得出来 包括上面提到...

    SQL语句教程.pdf

    ♦ SQL 语法: 这一页列出所有在这个教材中被提到的 SQL 语法。 对于每一个指令, 我们将会先列出及解释这个指令的语法, 然后用一个例子来让读者了解这 个指令是如何被运用的。当您读完了这个网站的所有教材后,您将...

    最易入门SQL语句教程

    SQL语句教程(18) UNION ALL.................................. 11 SQL语句教程(19) INTERSECT................................. 11 SQL语句教程(20) MINUS........................................12 SQL语句...

    Sql中的MINUS

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

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

    可以用SQL实现同样的功能,就是麻烦了点。 drop table t1; drop table t2; create table t1(id int primary key,nickname varchar(20),playNum varchar(20)); create table t2(id int primary key,nickname ...

    deep-learning-drizzle:通过从这些激动人心的讲座中学习,可以深入学习深度学习,强化学习,机器学习,计算机视觉和自然语言学习!

    :minus: :minus: :minus: :minus: :minus: :minus: :minus: :minus: :minus: :minus: :minus: :minus: :minus: :minus: :minus: :minus: :minus: :minus: :minus: :minus: :minus: :minus: :minus: :minus: :minus:...

    SQL语句教程.doc

    SQL指令 2 SELECT 2 DISTINCT 3 WHERE 4 AND OR 5 IN 5 ...UNION ALL 37 INTERSECT 38 MINUS 39 子查询 40 EXISTS 42 CASE 43 算排名 44 算中位数 45 算总合百分比 47 算累积总合百分比 48 SQL语法 49

Global site tag (gtag.js) - Google Analytics