Sql中Union应用

来源:互联网 发布:外汇软件mt4骗局 编辑:程序博客网 时间:2024/05/22 03:01

SQL Select Union的应用  

表A: 


订单号       入库单号       数量       入库数量 
  001                                  500 
  002                                  300 
  003                                  400 

表B: 

订单号       入库单号       入库数量 
  001                R01                250 
  001                R02                250 
  002                R03                100 
  002                R04                200 
  003                R05                150 
  003                R06                250 

现在生成表如下: 

订单号       入库单号       数量       入库数量 
  001                                  500 
  001                R01                               250 
  001                R02                               250 
  002                                  300 
  002                R03                                 
  002                R04                               200 
  003                                  400 
  003                R05                               150 
  003                R06                               250 

SQL语句如下: 

select a.订单号,a.入库单号,a.数量,a.入库数量 from a 
union 
select b.订单号,b.入库单号,null,b.入库数量 from b

 

 

UNION 运算符使用准则 
使用 UNION 运算符时请遵循以下准则: 

1、在使用 UNION 运算符组合的语句中,所有选择列表的表达式数目必须相同(列名、算术表达式、聚合函数等)。 


2、在使用 UNION 组合的结果集中的相应列、或个别查询中使用的任意列的子集必须具有相同数据类型,并且两种数据类型之间必须存在可能的隐性数据转换,或提供了显式转换。例如,在 datetime 数据类型的列和 binary 数据类型的列之间不可能存在 UNION 运算符,除非提供了显式转换,而在 money 数据类型的列和 int 数据类型的列之间可以存在 UNION 运算符,因为它们可以进行隐性转换。 


3、用 UNION 运算符组合的各语句中对应的结果集列出现的顺序必须相同,因为 UNION 运算符是按照各个查询给定的顺序逐个比较各列。 


4、通过 UNION 生成的表中的列名来自 UNION 语句中的第一个单独的查询。若要用新名称引用结果集中的某列(例如在 ORDER BY 子句中),必须按第一个 SELECT 语句中的方式引用该列: 
SELECT city AS Cities FROM stores_west 
UNION 
SELECT city FROM stores_east 
ORDER BY city 

 

可以在任何组合中、单一 UNION 运算中,合并两个或多个查询、表、及 SELECT 语句的结果。下列示例将名为 New Accounts 的现存表和一个 SELECT 语句合并:

TABLE [New Accounts] UNION ALL

SELECT *

FROM Customers

WHERE OrderAmount > 1000;


按照缺省规定,使用 UNION 运算时不返回重复的记录;然而,可以包含 ALL 谓词来确保返回所有的记录。这样,运行查询的速度也会快些。

一次 UNION 运算中的所有查询必须要求相同的字段数量;但是,字段无须具有相同的大小或数据类型。

只能在第一个 SELECT 语句中使用别名,因为它们在其他语句中已被省略。在 ORDER BY 子句中,可引用在第一个 SELECT 语句中被调用的字段名。

原创粉丝点击