zoukankan      html  css  js  c++  java
  • SQL中MINUS的用法与UNION的用法

    一:MINUS指令

    其是运用在两个 SQL 语句上。
    它先找出第一个 SQL 语句所产生的结果,然后看这些结果有没有在第二个 SQL语句的结果中。
    如果有的话,那第一个SQL结果数据就被去除,而不会在最后的结果中出现。
    如果第一个 SQL 语句所产生的结果并没有存在于第二个 SQL 语句所产生的结果内,
    那第一个SQL结果数据就被保留,会在最后的结果中出现。
    MINUS 的语法如下:
    [SQL 语句 1]
    MINUS
    [SQL 语句 2]
    举例:
    Store_Information 表格
    store_name  Sales  Date
    Los Angeles  $1500  Jan-05-1999
    San Diego  $250  Jan-07-1999
    Los Angeles  $300  Jan-08-1999
    Boston  $700  Jan-08-1999
     
    Internet Sales 表格 Date  Sales
    Jan-07-1999  $250
    Jan-10-1999  $535
    Jan-11-1999  $320
    Jan-12-1999  $750
     
    我们用以下的 SQL 语句:
    SELECT Date FROM Store_Information
    MINUS
    SELECT Date FROM Internet_Sales
    结果:
    Date
    Jan-05-1999
    Jan-08-1999


    解释:
    "Jan-05-1999", "Jan-07-1999", and "Jan-08-1999" 是 "SELECT Date FROM Store_Information" 所产生的结果。
    在这里面,"Jan-07-1999" 是存在于 "SELECT Date FROM Internet_Sales" 所产生的结果中。
    因此 "Jan-07-1999" 并不在最后的结果中。
    请注意,在 MINUS 指令下,不同的值只会被列出一次。


    与MINUS功能类似的有
    第一个
    SELECT   表1.*    
    FROM     表1,   表2
    WHERE    表1.主键=表2.主键(+)  
    AND   表2.主键   IS   NULL;
    第二个
    select   *   from   表1   where   not   exists(select   1   from   表2   where   表1.主键=表2.主键);
    第三个
    select   *   from   表1   where   表1.主键 not   in (select  主键   from   表2);
    当然效率较高的还是MINUS。

    二:UNION 指令

    其是将两个 SQL 语句的结果合并起来。
    从这个角度来看, UNION 跟 JOIN 有些许类似,因为这两个指令都可以由多个表格中撷取资料。
    UNION 的一个限制是两个 SQL 语句所产生的栏位需要是同样的资料种类。
    另外,当我们用 UNION这个指令时,我们只会看到不同的资料值 (类似 SELECT DISTINCT)。
    UNION 的语法如下:
    [SQL 语句 1]
    UNION
    [SQL 语句 2]


    举例:
    表格: Store_Information
    store_name       Sales             Date
    Los Angeles      $1500          Jan-05-1999
    San Diego        $250           Jan-07-1999
    Los Angeles      $300           Jan-08-1999
    Boston           $700           Jan-08-1999
    表格: Internet Sales
    Date             Sales
    Jan-07-1999      $250
    Jan-10-1999      $535
    Jan-11-1999      $320
    Jan-12-1999      $750

    我们用以下的 SQL 语句:
    SELECT Date FROM Store_Information
    UNION
    SELECT Date FROM Internet_Sales
    结果:
    Date
    Jan-05-1999
    Jan-07-1999
    Jan-08-1999
    Jan-10-1999
    Jan-11-1999
    Jan-12-1999

    说明:
    如果我们在任何一个 SQL 语句 (或是两句都一起) 用 "SELECT DISTINCT Date" 的话,
    那我们会得到完全一样的结果。
    名字可以不一样。但是,数据类型必须相似。
    也就是说主表(第一个表)第一列是varchar(100),副表(第一个以外的所有表)的第一列都要是varchar(100&&<100)
    (char好像也可以,或是可以自动转换数据类型),其它是不行的,还有几个表的列数必须相同。

    备注:随笔内容来源于网上资料整理,仅供参考。

  • 相关阅读:
    ( 转)移动端H5页面之iphone6的适配
    谨慎设置iScroll4的useTransform属性,他会导致scrollToElement方法表现异常
    (转)配置Apache服务器,使浏览器访问无缓存
    html DIV元素左右偏移方法,偏移后默认宽度仍浏览器宽度一致
    Content Security Policy(CSP)简介(转)
    隐式打开Activity——Intent设置(如何打开)和Intent-fileter配置(怎么能被打开)
    最近使用iScroll遇到的一些问题及最后的解决方法
    (转)CSS3 Media Queries
    自定义checkbox和radio
    三只松鼠卖坚果
  • 原文地址:https://www.cnblogs.com/Alanf/p/7374875.html
Copyright © 2011-2022 走看看