前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle 表复杂查询之多表合并查询

Oracle 表复杂查询之多表合并查询

作者头像
郑小超.
发布2018-01-26 10:55:32
2.2K0
发布2018-01-26 10:55:32
举报
文章被收录于专栏:GreenLeavesGreenLeaves

本文使用到的是oracle数据库scott方案所带的表,scott是oracle数据库自带的方案,使用前请确保其解锁

Oracle合并查询一共有四种方式,分别使用不同的关键字:UNION、UNION ALL、MINUS、INTERSECT

1、UNION ALL

使用UNION ALL,表示取A、B的合集,不过滤重复的数据行,代码如下:

代码语言:javascript
复制
select * from emp where sal>2500

左图表示结果集A

代码语言:javascript
复制
select * from emp where JOB='MANAGER'

左图表示结果集B

现在分析结果集A和结果集B,发现

红框中的数据重复了,接着我们在使用UNION ALL关键字

代码语言:javascript
复制
select * from emp where sal>2500
UNION ALL
select * from emp where JOB='MANAGER'

UNION ALL   重复数据并没有被排除掉

2、UNION

使用UNION,会将结果集A和结果集B进行UNION ALL运算,然后取两者交集的余集作为结果集

代码如下:

代码语言:javascript
复制
select * from emp where sal>2500
UNION
select * from emp where JOB='MANAGER'

原先使用UNION ALL中重复的记录行被排除掉了

3、Intersect

 使用Intersect,会将结果集A和结果集B进行UNION ALL运算,然后两者之间的集交集作为结果集和UNION刚好相反

代码语言:javascript
复制
select * from emp where sal>2500
INTERSECT
select * from emp where JOB='MANAGER'

将两个结果集的交集检索出来了

4、MINUS

 使用MINUS,取结果集A减去结果集B留下的差集,注:如果结果集A小于等于结果集B,返回空结果集.

代码语言:javascript
复制
select * from emp where sal>2500

左图表示结果集A

代码语言:javascript
复制
select * from emp where JOB='MANAGER'

左图表示结果集B

代码语言:javascript
复制
select * from emp where sal>2500
MINUS
select * from emp where JOB='MANAGER'
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-03-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档