集合逻辑

本文介绍了SQL中的集合操作,包括UNION、UNION ALL、INTERSECT及EXCEPT的使用方法和区别。这些操作用于合并多条SELECT语句的结果集,并讨论了如何处理重复数据和不同数据集之间的交集与差集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2016.12.4

十五.集合逻辑

之前的各种连接和子查询以不同的方式处理多个表的数据组合。但是结果仍然是一条单独的SELECT语句。合并查询的概念,也就是用一条SQL语句来组合多条SQL语句。

我们把每个SELECT语句作为一个集合来引用。

15.1 使用UNION操作符

UNION操作符用来处理这样的逻辑:选择在setA或者在setB中的数据

Selectstatement1

UNION

Selectstatement2

ORDER BY columnlist

使用UNION,需要遵循3个原则:

(1)Selectstatement1Selectstatement2中的SELECT columnlist中必须有相同数目的列。

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

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

当使用UNION时,我们应当使用列的别名为所有相对应的列赋予相同的列名。

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

UNION允许我们在一条SELECT语句中检索不相关或者部分相关的数据。

15.2 UNIONUNION ALL

Selectstatement1

UNION ALL

Selectstatement2

ORDER BY columnlist

UNION操作符排除了所有重复的行,UNION ALL操作符要求包含所有的行,即使是重复的。

UNION排除重复数据的方式与DISTINCT类似,DISTINCT应用于一条单独的SELECT语句,UNION则是排除了通过UNION组合到一起的所有SELECT语句中的重复数据。

15.3 交叉查询

INTERSECTMYSQL没有):

Selectstatement1

INTERSECT

Selectstatement2

ORDER BY columnlist

UNIONUNION ALL所返回的数据,处于组合在一起的两条SELECT语句中的任意一条所指定的集合中。这就像使用OR操作符把两个逻辑集合中的数据组合到一起一样。

SQL提供了INTERSECT操作符,它只把在两个集合中都能找到的数据提取出来。INTERSECT类似于AND操作符。

EXCEPTMYSQL没有,ORACLE中等价于MINUS):

Selectstatement1

EXCEPT

Selectstatement2

ORDER BY columnlist

EXCEPTINTERSECT的变体,它返回了在一个集合中存在而在另一个集合中不存在的数据。

它将显示在 Selectstatement1中但是不在Selectstatement2中的数据。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值