SQL中 UNION 和 UNION ALL 操作符小结和其中的坑

SQL中 UNION 和 UNION ALL 操作符小结

  1. UNION 和 UNION ALL 操作符用于合并两个或多个 SELECT 语句的结果集【适用场景】
  2. UNION 和 UNION ALL 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型,即数据类型必须兼容。同时,每条 SELECT 语句中的列的顺序必须相同。
  3. UNION 和 UNION ALL 结果集中的列名总是等于 UNION(ALL)中第一个 SELECT 语句中的列名所以第一个要起别名最好在第一列起
  4. UNION 和 UNION ALL 这两者从使用和效率上来说都有所不同。如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用union all
    1. 对重复结果的处理:UNION在进行表链接后会筛选掉重复的记录,Union All不会去除重复记录
    2. 对排序的处理:Union将会按照字段的顺序进行排序;UNION ALL只是简单的将两个结果合并后就返回
    3. 从效率上说: UNION ALL 要比 UNION 快很多
  5. UNION 其实执行的实质逻辑应该是先将某一子结果集进行排序,然后再判断是否有重复的数据,若有则删除掉重复的数据

简单总结UNION 对两个结果集进行并集操作,不包括重复行去重,同时进行默认规则的排序
UNION ALL 对两个结果集进行并集操作,包括重复行,不进行排序;

由于Union需要对查询结果集进行排序操作,当数据量较大时,若非特殊需要,尽量不要使用Union操作,而改用Union All操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值