oracle union all写法,【oracle】-集合运算:UNION,UNION ALL...

本文详细介绍了Oracle数据库中的四种集合操作:UNION(并集,去除重复)、UNION ALL(全并集,包含所有记录)、INTERSECT(交集,仅保留共有的记录)和MINUS(差集,显示emp表中emp10表不存在的记录)。通过实例演示了如何在实际场景中运用这些操作,帮助理解集合运算在查询优化中的作用。

在Oracle中提供了三种类型的集合操作: 并(UNION)、交(INTERSECT)、差(MINUS)

UNION:求并,重复记录只显示一次。

UNION ALL:求并集,显示所有记录信息。

INTERSECT:求交集

MINUS:返回两个查询结果的差集

c5af48c99e407e6b0b9727e61a249dd6.png

​以下我们来介绍下关于oracle的集合运算:

一、数据准备

根据emp表数据创建emp10表

create table emp10 as (select * from emp where deptno=10);

当前表数据:

emp10表

e0440ce9dea7df2075360c8faf26247b.png

emp表

1e89a61e34a574e14cb7a36c83edfbc5.png

二、oracle集合运算

1、UNION

说明

​取并集,重复记录只显示一次

写法

select * from emp union select * from emp10;

结果

791d168416b75a6f96dd1965c8e73439.png

2、UNION ALL

说明

取并集,显示所有数据

写法

select * from emp union all select * from emp10;

结果

0d6ac650627aef721de6460c89b71a09.png

3、INTERSECT

说明

求交集,两个集合中公共的部分

写法

select * from emp intersect select * from emp10;

结果

77baae499f1a595f51000f5b9b305649.png

4、MINUS

说明

求差集,即返回的是emp中有,emp10中没有的数据

写法

select * from emp minus select * from emp10;

结果

27a4815dd9f8ef35ba9ba39d60f9008f.png

Oracle集合操作函数:union、intersect、minus

[转]Oracle集合操作函数:union.intersect.minus 集合操作符专门用于合并多条select 语句的结果,包括:UNION, UNION ALL, INTERSECT, MINU ...

【转】Oracle集合操作函数:union、intersect、minus

集合操作符专门用于合并多条select 语句的结果,包括:UNION, UNION ALL, INTERSECT, MINUS.当使用集合操作符时,必须确保不同查询的列个数和数据类型匹配. 集合操作符 ...

Oracle集合操作函数:Union、Union All、Intersect、Minus

Union.对两个结果集进行并集操作.不包含反复行,同一时候进行默认规则的排序: Union All.对两个结果集进行并集操作,包含反复行.不进行排序: Intersect,对两个结果集进行交集操作. ...

SQL Server中的集合运算: UNION, EXCEPT和INTERSECT

SQL Server中的集合运算包括UNION(合并),EXCEPT(差集)和INTERSECT(相交)三种. 集合运算的基本使用 1.UNION(合并两个查询结果集,隐式DINSTINCT,删除重复 ...

Oracle学习之集合运算

一.集合运算操作符  UNION:(并集)返回两个集合去掉重复值的所有的记录  UNION ALL:(并集)返回两个集合去掉重复值的所有的记录 INTERSECT:(交集)返回两个集合的所有记录,重复 ...

Oracle学习(七):集合运算

1.知识点:能够对比以下的录屏进行阅读 SQL> -- 查询10和20号部门的员工的3种方法 SQL> --1. select * from emp where deptno in (10 ...

SQL基础教程(第2版)第7章 集合运算:7-2 联结(以列为单位对表进行联结)

第7章 集合运算:7-2 联结(以列为单位对表进行联结) ■联结的特定语法和过时语法 ● 联结( JOIN)就是将其他表中的列添加过来,进行“添加列”的集合运算.UNION是以行(纵向)为单位进行操作 ...

集合运算(UNION)

表的加法 集合运算:就是满足统一规则的记录进行的加减等四则运算. 通过集合运算可以得到两张表中记录的集合或者公共记录的集合,又或者其中某张表中记录的集合. 集合运算符:用来进行集合的运算符. UNIO ...

随机推荐

MySQL InnoDB存储引擎

200 ? "200px" : this.width)!important;} --> 介绍 本篇文章是对Innodb存储引擎的概念进行一个整体的概括,innodb存储引擎的 ...

jsp脚本元素

在JSP页面中有三种脚本元素(Scripting Elements):声明.小脚本和表达式. 声明(declaration)用来在JSP页面中声明变量和定义方法.声明是以 ...

bpl 包的编写和引用

转载:http://www.cnblogs.com/gxch/archive/2011/04/23/bpl.html 为什么要使用包? 答案很简单:因为包的功能强大.设计期包(design-time ...

使用Chrome工具来分析页面的绘制状态

Chrome Canary(Chrome “金丝雀版本”)目前已经支持Continuous painting mode,用于分析页面性能.这篇文章将会介绍怎么才能页面在绘制过程中找到问题和怎么利用这个 ...

读《程序员的SQL金典》[2]--函数

一.数学函数 1.RAND SELECT RAND () ---0.302870228294199 取0-1之间的随机小数. 2.小数取整 CEILINT(data)舍掉小数部分并向上取整. FLOO ...

EDIUS中调整YUV曲线的教程

本篇文章重点地讲解了EDIUS调整YUV曲线的方法,是一篇很详细的EDIUS教程文章,它能帮助新手小伙伴快速掌握EDIUS视频编辑软件的某一知识点.相信坚持学习小编推荐的教程文章,你们会很快入门EDI ...

【转】【C#】【Thread】【Parallel】并行计算

并行计算 沿用微软的写法,System.Threading.Tasks.Parallel类,提供对并行循环和区域的支持. 我们会用到的方法有For,ForEach,Invoke. Program.Da ...

关于基于.NET Framework的网络通信程序底层扫盲

引自书中9.3节:          如果服务端在.Net Framework基础上开发,那么可以直接选择使用.Net Framework提供的Socket类, ...

移动端 设置 小于12px 字体 初探

1.移动端字号规范 2. 百度字号调研 3. 绕过12px 限制 4. 缩放 5. chrome  字号

[IOI1996] USACO Section 5.3 Network of Schools(强连通分量)

nocow上的题解很好. http://www.nocow.cn/index.php/USACO/schlnet 如何求强连通分量呢?对于此题,可以直接先用floyd,然后再判断. --------- ...

其中CLOCK11是VARCHAR2 (55 Byte),所以先转换为date格式,后需要查询出当CLOCK_IN上班卡是在17:30-17:31、20:30-20:31、01:30-01:31、5:30-5:31、8:30-8:31、13:30-13:31和下班卡是在17:30-17:31、20:30-20:31、01:30-01:31、5:30-5:31、8:30-8:31、13:30-13:31卡点刷卡的人员 并优化oracle如下SQL性能,提高执行效率和减少资源占用: WITH ALL_CLOCK AS( SELECT TO_DATE(TO_CHAR(TO_TIMESTAMP(CLOCK11, 'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS') CLOCK_IN, TO_DATE(TO_CHAR(TO_TIMESTAMP(CLOCK12, 'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS') CLOCK_OUT, T.* FROM HCP.V_CLK_TZ_ATTENDANCE_RESULT T ) SELECT * FROM ALL_CLOCK FF WHERE (FF.CLOCK_IN BETWEEN TRUNC(SYSDATE-1) + 330 / 1440 AND --5.30-5.31 TRUNC(SYSDATE-1) + 331 / 1440 OR FF.CLOCK_IN BETWEEN TRUNC(SYSDATE-1) + 510 / 1440 AND --8.30-8.31 TRUNC(SYSDATE-1) + 511 / 1440 OR FF.CLOCK_IN BETWEEN TRUNC(SYSDATE-1) + 810 / 1440 AND --13.30-13.31 TRUNC(SYSDATE-1) + 811 / 1440 OR FF.CLOCK_IN BETWEEN TRUNC(SYSDATE-1) + 90 / 1440 AND --01.30-01.31 TRUNC(SYSDATE-1) + 91 / 1440 OR FF.CLOCK_IN BETWEEN TRUNC(SYSDATE-1) + 1050 / 1440 AND --17.30-17.31 TRUNC(SYSDATE-1) + 1051 / 1440 OR FF.CLOCK_IN BETWEEN TRUNC(SYSDATE-1) + 1230 / 1440 AND --20.30-20.31 TRUNC(SYSDATE-1) + 1231 / 1440) UNION ALL SELECT * FROM ALL_CLOCK FF WHERE (FF.CLOCK_OUT BETWEEN TRUNC(SYSDATE-1) + 330 / 1440 AND --5.30-5.31 TRUNC(SYSDATE-1) + 331 / 1440 OR FF.CLOCK_OUT BETWEEN TRUNC(SYSDATE-1) + 510 / 1440 AND --8.30-8.31 TRUNC(SYSDATE-1) + 511 / 1440 OR FF.CLOCK_OUT BETWEEN TRUNC(SYSDATE-1) + 810 / 1440 AND --13.30-13.31 TRUNC(SYSDATE-1) + 811 / 1440 OR FF.CLOCK_OUT BETWEEN TRUNC(SYSDATE-1) + 90 / 1440 AND --01.30-01.31 TRUNC(SYSDATE-1) + 91 / 1440 OR FF.CLOCK_OUT BETWEEN TRUNC(SYSDATE-1) + 1050 / 1440 AND --17.30-17.31 TRUNC(SYSDATE-1) + 1051 / 1440 OR FF.CLOCK_OUT BETWEEN TRUNC(SYSDATE-1) + 1230 / 1440 AND --20.30-20.31 TRUNC(SYSDATE-1) + 1231 / 1440);
07-15
如下SQL需查找刷卡时间在8:30-8:31或17:30-17:31或20:30-20:31的资料取最早的一条记录并按打卡时间排序,请协助修改, 并优化oracle如下SQL性能,提高执行效率和减少资源占用: SELECT DECODE(HPB.WORK_PLACE, 0, '一园', 1, '二园', 2, '三园', HPB.WORK_PLACE) AS WORK_PLACE, FF.EMP_CODE,FF.EMP_NAME,TO_CHAR(FF.SIGN_TIME, 'YYYY-MM-DD HH24:MI:SS') CLOCK_IN,FF.DEV_NO,FF.DEV_ADDR,HPB.RANK_NAME,HPB.ORG_NAME FROM HCP.V_CLK_TZ_OPR FF JOIN HCP.TZ_EMP_IN HPB ON FF.EMP_CODE=HPB.EMPCODE WHERE FF.DEV_TYPE = 0 /* 精确时间范围过滤(利用索引) */ AND ( (FF.SIGN_TIME >= TRUNC(SYSDATE-1) + INTERVAL '17:30' HOUR TO MINUTE AND FF.SIGN_TIME < TRUNC(SYSDATE-1) + INTERVAL '17:31' HOUR TO MINUTE) OR (FF.SIGN_TIME >= TRUNC(SYSDATE-1) + INTERVAL '20:30' HOUR TO MINUTE AND FF.SIGN_TIME < TRUNC(SYSDATE-1) + INTERVAL '20:31' HOUR TO MINUTE) --OR (FF.SIGN_TIME >= TRUNC(SYSDATE-1) + INTERVAL '01:30' HOUR TO MINUTE AND FF.SIGN_TIME < TRUNC(SYSDATE-1) + INTERVAL '01:31' HOUR TO MINUTE) --OR (FF.SIGN_TIME >= TRUNC(SYSDATE-1) + INTERVAL '05:30' HOUR TO MINUTE AND FF.SIGN_TIME < TRUNC(SYSDATE-1) + INTERVAL '05:31' HOUR TO MINUTE) OR (FF.SIGN_TIME >= TRUNC(SYSDATE-1) + INTERVAL '08:30' HOUR TO MINUTE AND FF.SIGN_TIME < TRUNC(SYSDATE-1) + INTERVAL '08:31' HOUR TO MINUTE) --OR (FF.SIGN_TIME >= TRUNC(SYSDATE-1) + INTERVAL '13:30' HOUR TO MINUTE AND FF.SIGN_TIME < TRUNC(SYSDATE-1) + INTERVAL '13:31' HOUR TO MINUTE) ) AND TRUNC(FF.SIGN_TIME) = TRUNC(SYSDATE-1);
最新发布
07-17
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值