oracle union 类型转换,Oracle 中 union 和union all 的简单使用说明
1、刚刚工作不久,经常接触oracle,但是对oracle很多东西都不是很熟。今天我们来了解一下union和union
all的简单使用说明。Union(union all): 指令的目的是将两个 SQL
语句的结果集合并起来,得到你所需要的查询结果。
网上对这两者之间的一个总结:
Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
Union
All:对两个结果集进行并集操作,包括重复行,不进行排序;
2、对这个概念理解可能会有些模糊。我们通过实例来讲解,首先创建一个表Student,插入一些相应的测试数据。sql语句如下:
drop table student;
create table student
(
id int primary key,
name nvarchar2(50) not null,
score number not null
);
insert into student values(1,'Aaron',78);
insert into student values(2,'Bill',76);
insert into student values(3,'Cindy',89);
insert into student values(4,'Damon',90);
insert into student values(5,'Ella',73);
insert into student values(6,'Frado',61);
insert into student values(7,'Gill',99);
insert into student values(8,'Hellen',56);
insert into student values(9,'Ivan',93);
insert into student values(10,'Jay',90);
commit;
3、测试
union 命令的结果集,sql语句如下:
select *
from student
where id < 4
union
select *
from student
where id > 2 and id < 6
4、结果将是:
1 Aaron 78
2 Bill 76
3 Cindy 89
4 Damon 90
5 Ella 73
5、如果将union换成union all连接两个结果集,则返回结果是:
1 Aaron 78
2 Bill 76
3 Cindy 89
3 Cindy 89
4 Damon 90
5 Ella 73
小结:
可以看到,Union和Union All的区别之一在于对重复结果的处理。接下来我们将两个子查询的顺序调整一下,改为
--Union
select *
from student
where id > 2 and id < 6
union
select *
from student
where id < 4
看看执行结果是否和你期望的一致?
--Union All
select *
from student
where id > 2 and id < 6
union all
select *
from student
where id < 4
那么这个呢?答案是一模一样的~
6、据此我们可知,union和union all 区别在于在于对排序的处理。Union All将按照关联的次序组织数据,而Union将进行依据一定规则进行排序。那么这个排序规则是?我们换个查询方式看看:
select score,id,name
from student
where id > 2 and id < 6
union
select score,id,name
from student
where id < 4
结果如下:
73 5 Ella
76 2 Bill
78 1 Aaron
89 3 Cindy
90 4 Damon
和我们预料的一致:将会按照字段的顺序进行排序。之前我们的查询是基于id,name,score的字段顺序,那么结果集将按照id优先进行排序;而现在新的字段顺序也改变了查询结果的排序。并且,是按照给定字段a,b,c...的顺序进行的order by。即结果是order by a,b,c...........的。我们看下一个查询:
select score,id,name
from student
where id > 2
union
select score,id,name
from student
where id < 4
结果如下:
56 8 Hellen
61 6 Frado
73 5 Ella
76 2 Bill
78 1 Aaron
89 3 Cindy
90 4 Damon
90 10 Jay
93 9 Ivan
99 7 Gill
可以看到,对于score相同的记录,将按照下一个字段id进行排序。如果我们想自行控制排序,是不是用order by指定就可以了呢?答案是肯定的,不过在写法上有需要注意的地方
select score,id,name
from student
where id > 2 and id < 7
union
select score,id,name
from student
where id < 4
union
select score,id,name
from student
where id > 8
order by id des
order by子句必须写在最后一个结果集里,并且其排序规则将改变操作后的排序结果。对于Union、Union All都有效。
7、注意:
1,Union可以对字段名不同但数据类型相同的结果集进行合并;
2,如果字段名不同的结果集进行Union,那么对此字段的Order by子句将失效。
这里一起总结一下:
Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
Union All,对两个结果集进行并集操作,包括重复行,不进行排序;2016-12-23
可以在最后一个结果集中指定Order by子句改变排序方式
oracle union 类型转换,Oracle 中 union 和union all 的简单使用说明相关推荐
- oracle避免同一sql多次查询,Oracle SQL - 在一个查询中生成一行答案的最简单方法,因此我不必多次运行查询?...
不确定我是否理解正确,但这可能是你想要的.但可能性能欠佳. 12:32:22 HR@vm_xe> l 1 with player(id, dt) as ( 2 select 1, date '2 ...
- oracle leg函数,Hive中的leg和lead函数简单使用
介绍: Hive的分析函数又叫窗口函数,在oracle中就有这样的分析函数,主要用来做数据统计分析的. Lag和Lead分析函数可以在同一次查询中取出同一字段的前N行的数据(Lag)和后N行的数据(L ...
- 简单介绍oracle执行计划,Oracle性能优化之oracle中常见的执行计划及其简单解释
一.访问表执行计划 1.table access full:全表扫描.它会访问表中的每一条记录(读取高水位线以内的每一个数据块). 2.table access by user rowid:输入源ro ...
- oracle union详解,oracle union用法 oracle中union的用法
oracle中union的用法 只知道是用来左联接的,还有类似union all,谁有这个例子,要解释详细一点的一生中要有两次冲动,一次奋不顾身的爱情,一次为说走就走的旅行. UNION 指令的目的是 ...
- oracle+union+连接,Oracle中union/union all/Intersect/Minus用法
Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序: Union All,对两个结果集进行并集操作,包括重复行,不进行排序: Intersect,对两个结果集进行交集操作,不包 ...
- oracle 二进制运算符,Oracle UNION运算符
Oracle UNION运算符 在Oracle中,UNION运算符用于合并两个或多个Oracle SELECT语句的结果集.它结合了两个SELECT语句,并删除了它们之间的重复行. UNION运算符的 ...
- oracle union orderby,Oracle UNION和ORDER BY的奇怪问题
以下查询在几乎每个数据库(提供或获取虚拟表)中都非常有效dual,包括Oracle: select 'A' as x from dual union all select 'B' from dual ...
- oracle 转换为double,Oracle中的类型转换 (转)
Oracle中对不同类型的处理具有显式类型转换(Explicit)和自动类型转换(隐式类型转换Implicit)两种方式,对于显式类型转换,我们是可控的,但是对于自动类型转换,当然不建议使用,因为很难 ...
- mysql union order by_MySQL order by 在 union 中使用实例分析
下面是用于例子测试的两张原始数据表: article 文章表: aid title content 1 文章1 文章1正文内容... 2 文章2 文章2正文内容... 3 文章3 文章3正文内容... ...
最新文章
- leetcode算法题--Group Anagrams
- 密码学之hill密码
- 易语言反截图_【易语言】模仿QQ截图
- 密码学数字信封的介绍
- 数据压缩 第二次作业
- 一对一直播社交聊天程序: JAVA中的Socket源码概述
- Intel发6款全新9代i9/i7/i5 CPU:巅峰8核
- 15.2. 网络监控
- c语言单分支编程题,C语言习题集(分支和选择).doc
- 强强联合!蚂蚁金服与新炬网络战略合作,共同致力于国产数据库的技术推广和生态建设
- arm linux开机第一屏,小白求助大神T1刷机提示成功,但开机卡在斐讯白屏界面。...
- Python爬虫前置知识
- 制作u盘winpe启动盘_重装系统——制作U盘启动盘
- 用计算机语言说我累了,我累了,真的好累(读到心酸)
- 我们终究是一群平凡的人
- 国内外大数据创业面面观
- 控制台报 [WDS] Disconnected!不影响代码运行。
- 【已解决】【高速版】如何显示(扫描)局域网中所有的在线主机IP及MAC地址?
- 解决:dockerd: failed to start daemon: Devices cgroup isn‘t mounted
- 工程伦理--13.1 什么是“邻避效应”?
热门文章
- Leetcode 322. 零钱兑换 (每日一题 20210824)
- 66. Plus One
- Tableau必知必会之巧用 Index 函数查看数据类别详情
- Elasticsearch 使用过程中有哪些坑?教你避开这些坑
- 遗传算法 简单函数优化
- python如何使用字典中的值并进行比较_python – 如何比较字典中的值?
- python程序多次运行_[Python]在一段Python程序中使用多次事件循环
- QTexe软件设置系统默认的图标
- Hadoop2.0 YARN
- 面试总结-百度(1)