ORACLE的左右连接,全外连接

article/2025/10/6 11:51:46

先上概念

oracle连接分为:
左外连接:左表不加限制,保留左表的数据,匹配右表,右表没有匹配到的行中的列显示为null。
右外连接:右表不加限制,保留右表的数据。匹配左表,左表没有匹配到的行中列显示为null。
完全外连接:左右表都不加限制。即右外连接的结果为:左右表匹配的数据+左表没有匹配到的数据+右表没有匹配到的数据。

 

实际应用场景

对于实际的业务来说,采购订单,分为采购订单头表PO_HEADER_ALL中有(PO_HEADER_ID)字段

                                                             采购订单行表PO_LINES_ALL中有(PO_HEADER_ID,PO_LINE_ID)字段

头表对行表为 一对多关系

在逻辑上只能先有头表,再有行表

如果有这样一个需求:将所有的采购订单信息展示出来

等值连接SQL1:select pha.*,

                                     pla.*

                            from po_headers_all pha,

                                    po_lines_all       pla

                         where pha.po_header_id = pla.po_header_id

思考这样写 会带来什么问题?

 

解决

SQL1语句,是等值连接,只能将头、行表都有值的数据展示出来,对于只有头的信息是无法展示出来的,但是需求是订单信息展示,只有头信息的订单也需要展示出来

所以,左右连接便派上用场了

此为左连接

select

from po_headers_all pha, po_lines_all pla

where pha.po_header_id = pla.po_header_id(+)

左右连接是根据两个表的左右位置来说的,在写SQL的时候要分清哪个是主表,如上的po_headers_all为主表,它的位置在 po_lines_all左边,(+)要放在可能匹配不到值的表字段中(即行表可能是匹配不到对应的PO_HEADER_ID)

右连接也是如此,左右连接都是相似的

完全外连接(针对的是po_header_id在左右两边都匹配不到值的情况) 但是实际中不会出现这种逻辑,必须是先有头表再有行表

select * from pha full join phl on pha.po_header_id=pla.po_header_id


http://chatgpt.dhexx.cn/article/cfNbukLO.shtml

相关文章

SQL的内连接、左连接、右连接、 交叉连接、全外连接

sql表连接分成 外连接 、 内连接 和 交叉连接。. 外连接包括三种,分别是左外连接、右外连接、全外连接。. 对应的sql关键字:LEFT/RIGHT/FULL OUTER JOIN,通常我们都省略OUTER关键字,写成LEFT/RIGHT/FULL JOIN。. 在左、右外连接中都会以一种表为基表,基表的所有行、…

Mysql中实现全外连接

MySql中多表查询只提供了内连接,左外连接与右外连接: table_reference {[INNER] JOIN | {LEFT|RIGHT} [OUTER] JOIN} table_reference ON conditional_expr 1】INNER JOIN ON内连接(只写join时默认为内连接) SELECT * FROM emp e…

mysql 全外连接报错的原因

mysql 不支持 直接写full outer join 或者 full join来表示全外连接但是可以用left right union right 代替。 全外连接图(非原创图) 下面的是全外连接例子: select * from table a A(A为别名)LEFT JOIN table b B …

Oracle:左连接、右连接、全外连接、(+)号详解

目录 Oracle 左连接、右连接、全外连接、()号详解 1、左外连接(LEFT OUTER JOIN/ LEFT JOIN) 2、右外连接(RIGHT OUTER JOIN/RIGHT JOIN) 3、全外连接(FULL OUTER JOIN/FULL JOIN&#xff0…

全外连接给你讲

你知道的越多,你不知道的就越多 先来看看标准SQL里面定义的外连接的三种类型: 左外连接右外连接全外连接 其中,左外连接和右外连接没有本质的区别,用作主表的表写在运算符左侧就是左外连接,卸载运算符右侧就是右外连接…

SegmentFault 技术周刊 Vol.30 - 学习 Python 来做一些神奇好玩的事情吧

前言 开始之前,我们先来看这样一个提问: python初学者,请教python学习路径 相信看完 X_AirDu 的回答我们已经对 Python 有了一个大概的了解。那接下来就让我们更深入的了解 Python 吧~ Python 入门 [零基础学Python]一些关于Python的事情 已经…

产品读书《金字塔原理》

PPT参考 1PPT参考2 其实我读这本书并不是把它当作一本读物来读,反倒觉得像是一本工具书,全书的内容可能干货不多,总结出来就是“金字塔”,倒没什么其他,再多也就是一些案例!但是这个思想已经能让人俯首称赞…

转载-代码的马斯洛金字塔

从科技爱好者周刊(第 156 期):显卡缺货与异业竞争看到的关于代码的马斯洛金字塔这种说法;搬运过来方便自己随时阅读; 原文是代码的马斯洛金字塔; 内容如下: As in Maslow’s pyramid, each laye…

需求挖掘:产品经理怎么基于项目做需求挖掘

零、需求分析的背景 日常工作中,我们常常面临别人提过来的需求要不要做,如何去挖掘新的需求、衡量需求的投入产出比等相应的场景,这些场景都涉及到我们对需求的分析和挖掘,也就意味着我们需要掌握足够多的认知和方法论去对指定的需…

如何思考总结,并如何写文档展示. 结构化思考, 金字塔思维

先看三张图: 术语: 交叉表, 是人分类能力提升的一个标志. (对问题思考可以分类到多个维度,并了解维度之间的层级关系,哪个更主要,哪个是次要) 该图的是最简单的整理表格. 进一步复杂的在数据分析上有专门的术语: 叫做交叉表 找不到了 1.上线前 道: 法(制度): 术…

程序员应了解:知识技能金字塔

这是我的开篇文章!! 如今计算机非常火热,尤其是程序员(软件开发)更是大众眼中高工资的代表。 而新的编程语言和技术框架等更新迭代速度可以说是360行中最快之一,一般来说程序员知识半衰期是五年&#xff0…

需求

什么是需求 定义 需求是满足某类用户的某种欲望或解决某些问题时所产生的现象。工具类App的出现就是为了解决用户的某些问题。比如印象笔记,解决了用户记录事物,并整理笔记的需求;番茄todo解决拖延症人群效率低下,办事无条理的问题…

经济学金字塔

2.9.3.1 经济学金字塔 此章节我们将根据广义动量定理与系统思考建立起经济学金字塔的模型。经济学金字塔包含4个层级的均衡。第一层级是两个单一市场的均衡,分别为商品市场的均衡和货币市场的均衡。第二层级是两市场的均衡,即商品市场和货币市场共同达到…

【博学谷学习记录】超强总结,用心分享|产品经理需求分析方法简析

为什么要进行需求分析? 作为产品经理,每天要接触到大大小小不同的需求,在面对需求时,需要进行有效的需求分析,才能更好地了解问题,从而制定相应的解决方案,就是通过用户的问题,找到…

29. 人类将如何变革--走出金字塔模型(上)

作者 | Harper 审核 | gongyouliu 编辑 | auroral-L 人工智能,将改变全世界各行各业的现有工作方式,商业模式以及相关的经济结构,那么人类应该如何应对呢?最最基本的一点,当人工智能开始大规模取代人类工作者的时候&am…

基于空间金字塔网络的光流估计

Optical Flow Estimation using a Spatial Pyramid Network 我们学习通过结合经典的空间金字塔公式和深度学习来计算光流。通过当前流量估计和计算流量更新,在每个金字塔级别扭曲一对图像,通过从粗到细的方法估计大型运动。我们不是在每个金字塔层上对目…

《金字塔原理》读书笔记

0 前言 《金字塔原理》基本是每一位职场人的必修书目,在实习期间也是leader和师兄的强力推荐,在工作的软能力上提升自己。”想清楚,说明白,知道说什么、怎么说“,是我们希望达到的境界。我们在与人沟通时,需…

《腾讯数字生活报告2019》发布,互联网时代新马斯洛需求金字塔预示什么?

来源:腾讯研究院 5月22日,腾讯研究院、腾讯应用宝、腾讯开放平台联合出品的《腾讯数字生活报告2019》在腾讯全球数字生态大会应用生态主题论坛上发布,报告从生存、关系、发展三个层级解读了大众数字生活版图中的新趋势及核心洞察。透过这份数…

产品能力提升|《金字塔原理》

「金字塔原理」芭芭拉明托 2021/3/28 我们希望达到的境界:想清楚,说明白,知道说什么、怎么说。所以在和人沟通的时候需要明确三件事:谁是我的听众、他们想听什么、他们想怎样听。 金字塔原理的基本概念 金字塔原理是一种重点突出…

马斯洛金字塔的大秘密

废话不多说,直接切主题: (以上图片为UCD课件内容) 亚伯拉罕马斯洛在1943年在《人类激励理论》论文中所提出。人类需求像阶梯一样从低到高,按层分为五种:生理需求、安全需求、社交需求、尊重需求和自我实现…