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 谓词来确保返回所有的记录。这样,运行查询的速度也会快些。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值