SQL进阶-8-利用SQL进行集合运算
SQL本身就是以集合作为基础的,本文中记录的是利用各种集合运算。
- 交集
- 并集
- 差集
- 异或集
交集
内连接相当于是求两个集合的交集,相当于是集合的积(intersect)
1 | select_statment_1 intersect select_statment_2 -- 将两个语句直接连接 |
并集
并集,其实就是全外连接的使用,相当于是求集合的和(union)
- Union 不包含重复的数据
- Union all 包含重复的数据
1 | -- 使用全连接使用 |
差集A-B
A中存在但是B中不存在
1 | select |
差集的应用题目:
1 | select distinct shop -- 用表items减去表shopitems里面每个商品,若结果为空,则说明店铺库存里面有items中的全部商品 |
异或集(A并B)-(A交B)
异或指的是两个集合的并集除去它们的交集之外的集合:并集-交集
SQL中没有定义,可以通过两种方式是实现:
- (A union B) except (A intersect B)
- (A except B) union (B except A)
1 | select |