【ORACLE】Oracle提高篇之UNION&UNION ALL

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sdut406/article/details/83215355

在使用数据库查询的时候,有的时候是需要把多个查询结果作为一个整体输出,这个时候我们就需要使用UNION&UNION ALL

UNION&UNION ALL 作用

UNION&UNION ALL(或称为联合)的作用是将多个结果合并在一起显示出来。

UNION&UNION ALL 区别

UNION:对多个结果集进行并集操作并且去除重复结果,同时进行默认规则的排序
UNION ALL:仅仅对多个结果集进行并集操作,不去除重复记录,不进行排序按照关联的次序显示数据
其他操作:
INTERSECT:对多个结果集进行交集操作并且去除重复结果,同时进行默认规则的排序
MINUS:对两个结果集进行差操作并且去除重复结果,同时进行默认规则的排序

效率对比:UNION比UNION ALL 效率低,如果明确确认集合中不包括重复记录则使用UNION ALL ,如果表数据很大可能会导致用磁盘进行排序耗费时间

使用注意:union和union all 合并的两个或多个查询结果:列数、顺序相同;对应列的数据类型可以不同但是必须兼容(所谓的兼容是指两种类型之间可以进行隐式转换,不能进行隐式转换则报错),也可以用显式转换为相同的数据类型;如果为XML数据类型则列必须等价(所有列都必须类型化为 XML 架构,或者为非类型化),如果类型化,这些列必须类型化为相同的 XML 架构集合。
引自:https://blog.csdn.net/qq_34869143/article/details/66974540

UNION&UNION ALL 示例

STUDENT:
在这里插入图片描述

UNION 示例
-- union 
select  t.stuname as name from STUDENT t
union 
select t2.name  as name from STUDENT2 t2

结果截图:
在这里插入图片描述

UNION ALL 示例
-- union  all
select  t.stuname as name from STUDENT t
union all
select t2.name  as name from STUDENT2 t2

在这里插入图片描述

UNION&UNION ALL 排序

UNION排序是按照字段的优先顺序排序的,但是我们也可以指定某一个字段排序,但是UNION/UNION ALL排序时,不管有多少个被union的部分,都只有最后一行一个order by子句,且UNION/UNION ALL的order by子句只能通过列号来标示你要排序的字段

-- union  按照姓名排序
select t.stuid, t.stuname as name from STUDENT t
union 
select t2.id, t2.name  as name from STUDENT2 t2
order by 2

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sdut406/article/details/83215355