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
exists的用法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好像也可以,或是可以⾃动转换数据类型),其它是不⾏的,还有⼏个表的列数必须相同。
备注:随笔内容来源于⽹上资料整理,仅供参考。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。