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

在使用数据库查询的时候,有的时候是需要把多个查询结果作为一个整体输出,这个时候我们就需要使用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

在这里插入图片描述

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle中,UNION ALL是用来合并两个或多个SELECT语句的结果集,并返回所有的行,包括重复的行。 UNION ALL并不会对重复的行进行去重处理。而UNION操作符则会自动去除重复的行。 举个例子,如果我们有两个表STUDENT和STUDENT2,分别包含学生的姓名,我们可以使用UNION ALL操作符来合并两个表的结果集,示例代码如下: ``` select stuname as name from STUDENT union all select name from STUDENT2; ``` 运行上述SQL语句后将会返回一个包含所有学生姓名的结果集,包括重复的姓名。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Oracleunionunion all 的简单使用说明](https://blog.csdn.net/ZhangTJ_one/article/details/80463400)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [【ORACLEOracle提高UNION&UNION ALL](https://blog.csdn.net/sdut406/article/details/83215355)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值