sql union和union all的用法及效率

一:Union指令的目的是将两个sql语句的结果合并起来。

假设我们有以下的两个表格: 
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 

如果我们要找出来所有有营业额 (sales) 的日子。要达到这个目的,我们用以下的 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 

UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。

 

UNION ALL 这个指令的目的也是要将两个 SQL 语句的结果合并在一起。 UNION ALL 和 UNION 不同之处在于 UNION ALL 会将每一笔符合条件的资料都列出来,无论资料值有无重复。

如果上述的例子我们只用UNION ALL的话,则结果会是:

    Date 
  Jan-05-1999 
  Jan-07-1999 
  Jan-08-1999 
  Jan-08-1999 
  Jan-07-1999 
  Jan-10-1999 
  Jan-11-1999 
  Jan-12-1999 

总结:union是将具有相同结果的数据合并起来,同时会去掉所有重复的数据。

二:JOIN与UNION区别

join 是两张表做交连后里面条件相同的部分记录产生一个记录集

union是产生的两个记录集(字段要一样的)并在一起,成为一个新的记录集。

原文地址:https://www.cnblogs.com/zmztya/p/5332205.html