各种JOIN的区别

news2024/9/30 19:00:17

1. Inner Join(Join , 内连接)

功能:
返回两个表中都有的记录信息
也称之为自然连接
inner可以省略,inner join = join

图解:
在这里插入图片描述
语法:

SELECT columns
FROM Table_A A
INNER JOIN Table_B B
ON A.column = B.column;

结果:
仅包含两个表中匹配的行。

支持:

JoinTypeMysqlOracleHive
Inner Join

2. Left Outer Join(Left join , 左外连接)

功能:
返回左表中的所有记录,以及右表中匹配的记录。如果右表中没有匹配,则结果中的右表列显示为 NULL。
Outer可以省略,Left Outer join = Left join

图解:
在这里插入图片描述
语法:

SELECT columns
FROM Table_A A
LEFT JOIN Table_B B
ON A.column = B.column;

结果:
包含左表的所有行,如果在右表中没有匹配,则相应的右表列为 NULL。

支持:

JoinTypeMysqlOracleHive
Left Join

变种功能
返回左表中那些没有在右表查找到的对应行。

图解
在这里插入图片描述
语法:

SELECT columns
FROM Table_A A
LEFT JOIN Table_B B
ON A.column = B.column
WHERE B.column IS NULL;

结果
仅返回A表中不包含B表的记录

举例
假设 Table A 和 Table B中有以下数据:
Table A

PKValue
1A1
2A2
3A3
4A4
5A5

Table B

PKValue
2B2
3B3
4B4
6B6
7B7

通过
A LEFT JOIN B
ON A.PK = B.PK WHERE B.PK IS NULL
返回结果

A.PKB.PKA.ValueB.Value
1NULLA1NULL
5NULLA5NULL

3. Right Outer Join(Left join , 左外连接)

功能:
返回右表中的所有记录,以及左表中匹配的记录。如果左表中没有匹配,则结果中的左表列显示为 NULL。
Outer可以省略,Right Outer join = Right join

图解:
在这里插入图片描述

语法:

SELECT columns
FROM Table_A A
RIGHT JOIN Table_B B
ON A.column = B.column;

结果:
包含右表的所有行,如果在左表中没有匹配,则相应的左表列为 NULL。

支持:

JoinTypeMysqlOracleHive
Right Join

变种功能
返回右表中那些没有在左表查找到的对应行。

图解
在这里插入图片描述

语法:

SELECT columns
FROM Table_A A
RIGHT JOIN Table_B B
ON A.column = B.column
WHERE A.column IS NULL;

结果
仅返回B表中不包含A表的记录

举例
假设 Table A 和 Table B中有以下数据:
Table A

PKValue
1A1
2A2
3A3
4A4
5A5

Table B

PKValue
2B2
3B3
4B4
6B6
7B7

通过
A RIGHT JOIN B
ON A.PK = B.PK WHERE A.PK IS NULL
返回结果

A.PKB.PKA.ValueB.Value
NULL6NULLB6
NULL7NULLB7

4. Full Outer Join(Full Join , 全连接)

功能:
返回左表和右表中的所有记录。如果没有匹配,则对应表的列显示为 NULL。
Outer可以省略,Full Outer Join = Full Join

图解:
在这里插入图片描述

语法:

SELECT columns
FROM Table_A A
FULL JOIN Table_B B
ON A.column = B.column;

结果:
包含左表和右表中的所有行。未匹配的行在对应列中显示为 NULL。

支持:

JoinTypeMysqlOracleHive
Full Join×

变种功能
返回左表和右表中不存在交集的记录。

图解
在这里插入图片描述

语法:

SELECT columns
FROM Table_A A
FULL JOIN Table_B B
ON A.column = B.column
WHERE A.column IS NULL OR B.column

结果
仅返回A表和B表的差集

举例
假设 Table A 和 Table B中有以下数据:
Table A

PKValue
1A1
2A2
3A3
4A4
5A5

Table B

PKValue
2B2
3B3
4B4
6B6
7B7

通过
A FULL JOIN B
ON A.PK = B.PK WHERE A.PK IS NULL OR B.PK IS NULL
返回结果

A.PKB.PKA.ValueB.Value
1NULLA1NULL
NULL6NULLB6
NULL7NULLB7

5.Cross Join( 交叉连接 )

功能:
返回两个表的笛卡尔积,即每个左表的行都与右表的每一行结合。

图解:
在这里插入图片描述

语法:

SELECT columns
FROM Table_A A
CROSS JOIN Table_B B;

结果:
包含两个表的所有可能行组合。

支持:

JoinTypeMysqlOracleHive
Cross Join

6. Self Join(自连接)

功能:
将表与自身连接。通常用于表中记录的比较。

图解:
在这里插入图片描述

语法:

SELECT A.column, B.column
FROM Table A A
JOIN Table A B
ON A.column = B.column;

结果:
返回表中满足条件的行对。

支持:

JoinTypeMysqlOracleHive
Self Join

7.Left Semi Join

功能:
返回左表中所有在右表中有匹配的记录。只返回左表的列。

图解:
在这里插入图片描述

语法:

SELECT columns
FROM Table_A A
LEFT SEMI JOIN Table_B B
ON A.column = B.column;

结果:
结果:只包含左表中有匹配的行。

支持:

JoinTypeMysqlOracleHive
Left Semi Join××

8.Anti Join(Anti Join,反连接)

功能:
返回左表中所有在右表中没有匹配的记录。

图解:
在这里插入图片描述

语法:

(通常通过 LEFT JOIN + WHERE 或 NOT EXISTS 实现)
SELECT columns
FROM Table_A A
LEFT JOIN Table_B B
ON A.column = B.column
WHERE B.column IS NULL;

结果:
只包含左表中没有匹配的行。

支持:

JoinTypeMysqlOracleHive
Anti Join××

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2065979.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Sql Server】使用row_number over方式进行表分页,数据量达到五千多条记录后,查询变慢需要20多秒的解决方案

大家好,我是全栈小5,欢迎来到《小5讲堂》。 这是《Sql Server》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 前言单字段查询…

缓存出海方案

优质博文:IT-BLOG-CN 一、挑战/注意事项 【1】框架组不允许在不同地区部署的独立Redis实例拥有相同的名称,因此不同地区需要使用不用的Redis集群名称。 【2】分布式锁问题: 该场景需要保证key与UCS灰度策略是可以同步的,即同一…

从《黑神话:悟空》爆火看中国游戏行业的崛起

近年来,中国游戏行业经历了前所未有的快速发展与变革,而《黑神话:悟空》的爆火更是成为了这一进程中的标志性事件。这款游戏不仅在国内市场引起了巨大轰动,也在全球范围内赢得了广泛关注与赞誉,其成功背后折射出中国游戏行业在技术…

住宅代理和移动代理的全面比较:提高隐私和效率的最佳选择

近年来随着网络的发展,我们在网络上的行为越来越透明化。网络隐私和数据安全已经成为企业和个人用户不可忽视的一部分,如何提高我们的网络访问安全指数是一个值得商讨的问题。当下,代理技术在提高网络效率方面发挥了重要作用。本文将深入探讨…

redis面试(十八)RedLock加锁原理

什么是redLock RedLock算法思想,不只在一个redis实例上创建锁,是在多个redis实例上创建锁,n / 2 1,必须在大多数redis节点上都成功创建锁,才能算这个整体的RedLock加锁成功,避免说仅仅在一个redis实例上加…

uni-app01

工具:HuilderX noed版本:node-v17.3.1 npm版本:8.3.0 淘宝镜像:https://registry.npmmirror.com/ 未安装nodejs可以进入这里https://blog.csdn.net/a1241436267/article/details/141326585?spm1001.2014.3001.5501 目录 1.项目搭建​编辑 2.项目结构 3.使用浏览器运行…

【数据结构】总结二叉树的概念以及存储结构

目录 1. 树的概念及结构 1.1 树的名词定义 1.2 树的表示 2. 二叉树的概念及结构 2.1 二叉树的概念 2.2 特殊的二叉树 2.2.1 满二叉树 2.2.2 完全二叉树 2.3 二叉树的存储结构 2.3.1 顺序存储 2.3.2 链式存储 3. 选择题 1. 树的概念及结构 1.1 树的名词定义 1. 节…

基于x86 平台opencv的图像采集和seetaface6的口罩人脸检测识别功能

目录 一、概述二、环境要求2.1 硬件环境2.2 软件环境三、开发流程3.1 编写测试3.2 配置资源文件3.2 验证功能一、概述 本文档是针对x86 平台opencv的图像采集和seetaface6的口罩人脸检测识别功能,opencv通过摄像头采集视频图像,将采集的视频图像送给seetaface6的口罩人脸检测…

Docusign 电子签名的合法性指南【中国】

电子签名法律概述 中华人民共和国(“中国”)于2004年颁布了《电子签名法》(“电子签名法”),并于2015年和2019年进行了重大修订。电子签名法规定,只要当事人同意采用电子签名形式,文件的法律效…

基于重要性加权的LLM自我改进:考虑分布偏移的新框架

LLM自我改进的典型范式是在自生成数据上训练LLM,但是其中的部分数据可能有害,所以应该被过滤掉。但是目前的工作主要采用基于答案正确性的过滤策略,在这篇论文中,证明过滤掉正确但具有高分布偏移程度(DSE)的样本也可以有利于自我改进的结果。 论文的主要贡献如下: 提出了一个…

高并发集群饿了么后端的登录模块

高并发集群饿了么后端的登录模块 1.数据库 非交互式python: 非交互式: 2.数据库的负载均衡:阿里巴巴的mycat 修改配置文件 /usr/local/mycat/conf/server.xml :对外的账号 密码 数据库 /usr/local/mycat/conf/schema.xml 如果出现启动异常&…

搭建自己的金融数据源和量化分析平台(七):定时更新上市公司所属行业门类及大类

0x00 前言 由于此前从深交所下载的股票信息中只有行业门类信息,没有行业大类信息,导致后续解析三大报表和量化选股的时候无法进行: 可以看到深交所的股票是没有大类信息的。 再看看上交所的保险股: 因此需要将深交所股票的所属…

关于 IoTDB 的疑问,我们这次有奖征集!

新的社区活动来啦! 你是否对 IoTDB 的技术/操作还有疑问,并需要得到原厂研发团队的解答? 你是否希望在踊跃提出疑问的同时,收获一份精美小礼物? 为回馈新老朋友对 Apache IoTDB 开源社区的活跃贡献,最新社区…

数据结构day01(数据结构、算法基础知识)

目录 【1】数据结构基础知识 1》什么是数据结构 2》数据 3》逻辑结构 1>线性关系 2>层次关系 3>网状关系 4》存储结构 1>顺序存储 2>链式存储 3>索引存储结构 4>散列存储 5》操作 【2】算法基础知识 1> 什么是算法 2> 算法设计 3> 算…

8金收官!仿真工程师为你揭秘中国跳水梦之队的“水花消失术”

巴黎奥运会上,中国跳水梦之队再一次上演“水花消失术”,不仅赢得了裁判的高分,也令全球观众惊叹不已。 发挥出色的运动员入水如同“牛奶入水”,顺滑得仿佛不带一丝涟漪;而发挥失误的运动员仿佛“炸鱼队”来袭&#xf…

.Net Linux平台下System.Drawing.Imaging替代方案

文章目录 前言一、ImageSharp库二、SkiaSharp库三、System.Drawing.Common库总结 前言 在.NET Standard中,System.Drawing.Imaging 命名空间并不直接支持,因为 System.Drawing 命名空间主要是为了Windows Forms(WinForms)和GDI设计…

FPGA第 5 篇,FPGA技术优略势,FPGA学习方向,FPGA学习路线,FPGA专业知识的学习方向(FPGA现场可编程门阵列学习路线和方向)

前言 前几篇讲了一下FPGA的发展和应用,以及未来前景。具体详细,请看 FPGA发展和应用,以及未来前景https://blog.csdn.net/weixin_65793170/category_12665249.html 这里我们来,记录一下,FPGA专业知识的学习路线 一.…

World of Warcraft [CLASSIC] the Eye of Eternity [EOE] P1-P2

World of Warcraft [CLASSIC] the Eye of Eternity [EOE] 永恒之眼(蓝龙) 第一阶段 第二阶段 第三阶段 载具1-6技能介绍 World of Warcraft [CLASSIC] the Eye of Eternity [EOE]_永恒之眼 eoe-CSDN博客 永恒之眼怎么出副本呢,战斗结束&am…

泛微E9如何更新缓存

泛微E9如何更新缓存 在E9中,是默认开启了数据缓存的,如果直接操作数据库是会存在缓存不更新的问题,E9系统提供以下几种方式进行缓存清空的方式。 注:原则上禁止通过非程序渠道直接修改OA数据库数据,可以直接在页面进行…

LCR 162. 数字 1 的个数 题解

189轮转数组 189. 轮转数组 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 时间复杂度o(n),空间复杂度 o(1) class Solution {public void rotate(int[] nums, i…