SQL中几种集合操作的对比介绍
UNION
UNION指令的目的是将两个SQL语句的结果合并起来,从这个角度来看,UNION跟JOIN有些许类似。
但UNION的一个限制是两个SQL语句所产生的结果列需要是保持一致。另外,UNION执行过程中会对结果进行去重处理,最终结果返回的是不同的值(类似SELECTDISTINCT)。
UNION ALL
UNION ALL这个指令的目的也是要将两个SQL语句的结果合并在一起。
UNION ALL和UNION的处理方式基本一致,所需的限制也是相同,不同之处在于UNION ALL不会对结果进行去重操作,只会将每一个符合条件的结果都列出来,无论结果值有无重复。
INTERSECT
同样和UNION指令类似,INTERSECT也是对两个SQL语句所产生的结果做处理的。
不同的地方是,UNION在处理逻辑上是一个OR的关系(如果这个值存在于第一句或是第二句,它就会被选出),而INTERSECT的处理逻辑则是AND的关系(这个值要存在于第一句和第二句才会被选出)。
简而言之,UNION是并集,而INTERSECT是交集。
MINUS
MINUS指令同样是运用在两个SQL语句上。
它先找出第一个SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果中,如果有的话,那这一个结果就被去除,而不会在最后的结果中出现,如果没有则会在最终结果显示。第二个SQL语句所产生的结果不管是不是在第一个SQL的结果中都不会在最终结果中显示。MINUS指令即相当于SQL1与SQL2的差集。
上面四种关联的语法均相同,如下格式:
[SQL 语句 1]
UNION | UNION ALL | INTERSECT | MINUS
[SQL 语句 2]
共同的限制点都是SQL 语句 1与SQL 语句 2所返回的查询结果列需保持一致。
- 点赞
- 收藏
- 关注作者
评论(0)