SQL 之 集合逻辑

关键字:UNION , UNION ALL , INTERSEC , EXCEPT / MINUS


1. UNION :与JOIN不同,UNION合并的表不需要有关联的列。UNION允许我们在一条SELECT语句中检索不相关的或者部分相关的数据。

SelectStatement1

UNION

SelectStatement2

ORDER BY columnlist


最后的ORDER BY 应用于组合到一起的两条查询语句的最终结果,对单个的查询应用排序是没有意义的。

UNION需遵循:

(1)使用UNION合并到一起的所有SELECT语句,在其SELECT columnlist中必须有相同数目的列;

(2)每个SELECT columnlist中的所有列必须以相同的顺序排列;

(3)’每个SELECT columnlist中的所有相对应的列,都必须有相同的或可兼容的数据类型;

SELECT
OrderDate AS 'Date',
'Order' AS 'Type',
OrderAmount AS 'Amount'
FROM Orders
WHERE CustomerID = 2

UNION

SELECT
ReturnDate AS 'Date',
'Return' AS 'Type',
ReturnAmount AS 'Amount'
FROM Returns
WHERE CustomerID = 2

ORDER BY Date


2. UNION ALL :UNION排除了重复的行,UNION ALL要求包含所有行,即使重复。


3. 交叉查询

INTERSEC:类似于AND操作符,只把两个集合中都能找到的数据提取出来。

Select语句1

INTERSEC

Select语句2

ORDER BY columnlist

同样,ORDER BY作用于两条查询语句交叉的结果。


EXCEPT:返回在一个集合中存在而在另一个集合中不存在的数据。

Select语句1

EXCEPT

Select语句2

ORDER BY columnlist

显示在Select语句1中但不在Select语句2中的数据。


MySQL不支持INTERSEC和EXCEPT。Oracle中与EXCEPT等价的是MINUS。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值