JOIN 和 OUTER JOIN,SQL中常见的连接方式

1. INNER JOIN(简称 JOIN)

INNER JOIN 是 SQL 中最常用的一种连接方式,默认的 JOIN 就是 INNER JOIN。它返回两个表中满足连接条件的匹配记录。

  • 作用:返回两个表中所有满足 ON 条件的记录。
  • 特性:如果表中的某些行在连接条件下没有匹配的行,那么这些行将不会出现在结果集中。

例子

SELECT * FROM TableA JOIN TableB ON TableA.ID = TableB.ID;

这将只返回 TableATableBID 字段匹配的记录。

2. OUTER JOIN

OUTER JOIN 分为三种类型:LEFT OUTER JOINRIGHT OUTER JOINFULL OUTER JOIN,它们的主要特点是即使某些行在连接条件下没有匹配的行,仍然会出现在结果集里。

  • LEFT OUTER JOIN(左外连接):返回左表(即 JOIN 中左边的表)中的所有记录,即使右表中没有匹配的行。如果右表没有匹配的行,右表的列会显示 NULL

  • RIGHT OUTER JOIN(右外连接):返回右表(即 JOIN 中右边的表)中的所有记录,即使左表中没有匹配的行。如果左表没有匹配的行,左表的列会显示 NULL

  • FULL OUTER JOIN(全外连接):返回两个表中的所有记录。如果左表没有匹配的行,左表的列会显示 NULL;如果右表没有匹配的行,右表的列会显示 NULL

2.1 LEFT OUTER JOIN (左外连接)

LEFT OUTER JOIN 返回左表的所有记录以及右表中与之匹配的记录。如果右表中没有匹配的记录,则结果中相应的右表列会显示为 NULL

例子

SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.ID = TableB.ID;

这将返回 TableA 中的所有记录,即使 TableB 中没有匹配的记录。如果 TableB 中没有与 TableA 中的某条记录匹配的行,TableB 中的字段将显示为 NULL

2.2 RIGHT OUTER JOIN (右外连接)

RIGHT OUTER JOIN 返回右表的所有记录以及左表中与之匹配的记录。如果左表中没有匹配的记录,则结果中相应的左表列会显示为 NULL

例子

SELECT * FROM TableA RIGHT OUTER JOIN TableB ON TableA.ID = TableB.ID;

这将返回 TableB 中的所有记录,即使 TableA 中没有匹配的记录。如果 TableA 中没有与 TableB 中的某条记录匹配的行,TableA 中的字段将显示为 NULL

2.3 FULL OUTER JOIN (全外连接)

FULL OUTER JOIN 返回左表和右表的所有记录。如果某一表中没有匹配的记录,则对应的字段将显示为 NULL

例子

SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.ID = TableB.ID;

这将返回 TableATableB 中的所有记录。如果某一表中的记录没有匹配,另一个表的列将显示为 NULL

3. 总结对比:

连接类型返回记录说明
INNER JOIN只有满足连接条件的匹配记录只有在两个表中都有匹配的记录才会被返回。
LEFT JOIN返回左表的所有记录,右表的匹配记录左表的所有记录都返回,右表没有匹配的会显示 NULL
RIGHT JOIN返回右表的所有记录,左表的匹配记录右表的所有记录都返回,左表没有匹配的会显示 NULL
FULL JOIN返回左右表的所有记录,左表和右表的匹配记录左右表所有记录都返回,没匹配的字段会显示 NULL

4. 使用场景

  • INNER JOIN:当你只关心两张表中有匹配记录的情况时,使用 INNER JOIN
  • LEFT JOIN:当你需要保留左表的所有记录,并且想知道左表记录是否在右表中有匹配时,使用 LEFT JOIN
  • RIGHT JOIN:当你需要保留右表的所有记录,并且想知道右表记录是否在左表中有匹配时,使用 RIGHT JOIN
  • FULL JOIN:当你需要保留两张表的所有记录时,使用 FULL JOIN,即使它们没有匹配的记录。

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

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

相关文章

【HF设计模式】05-单例模式

声明:仅为个人学习总结,还请批判性查看,如有不同观点,欢迎交流。 摘要 《Head First设计模式》第5章笔记:结合示例应用和代码,介绍单例模式,包括遇到的问题、采用的解决方案、以及达到的效果。…

【FlutterDart】页面切换 PageView PageController(9 /100)

上效果: 有些不能理解官方例子里的动画为什么没有效果,有可能是我写法不对 后续如果有动画效果修复了,再更新这篇,没有动画效果,总觉得感受的丝滑效果差了很多 上代码: import package:flutter/material.…

Electron快速入门——跨平台桌面端应用开发框架

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…

Android NDK开发实战之环境搭建篇(so库,Gemini ai)

文章流程 音视频安卓开发首先涉及到ffmpeg编译打包动态库,先了解动态库之间的cpu架构差异性。然后再搭建可运行的Android 环境。 So库适配 ⽇常开发我们经常会使⽤到第三库,涉及到底层的语⾳,视频等都需要添加so库。⽽so库的体积⼀般来说 ⾮…

【Java回顾】Day2 正则表达式----异常处理

参考资料:菜鸟教程 https://www.runoob.com/java/java-exceptions.html 正则表达式 有一部分没看完 介绍 字符串的模式搜索、编辑或处理文本java.util.regex包,包含了pattern和mathcer类,用于处理正则表达式的匹配操作。 捕获组 把多个字符…

Unity性能优化总结

目录 前言 移动端常见性能优化指标​编辑 包体大小优化 FPS CPU占用率 GPU占用率 内存 发热和耗电量 流量优化 前言 终于有时间了,我将在最近两个项目中进行优化的一些经验进行归纳总结以飨读者。因为我习惯用思维导图,所以归纳的内容主要以图来…

FTP上传下传、SFTP上传下传、进度监控、断点续传、连接池封装JAVA一网打尽(二)FTP高级篇【2/5】

一、摘要(本系列汇总说明) - 总纲 FTP、SFTP上传下传、进度监控、断点续传、连接池封装JAVA一网打尽(一)FTP、SFTP上传下传、进度监控、断点续传、连接池封装JAVA一网打尽(二)FTP、SFTP上传下传、进度监控…

北京航空航天大学惊现技术商业“宫斗剧”!背后隐藏的内幕遭曝光!

北京航空航天大学(以下称北航)与源亿(北京)网络科技有限公司(以下称源亿)的派驻的员工恶意串通,指定北京蚂蚁非标科技有限公司(以下称蚂蚁公司)挖走源亿公司在现场派驻的…

transfomer深度学习实战水果识别

本文采用RT-DETR作为核心算法框架,结合PyQt5构建用户界面,使用Python3进行开发。RT-DETR以其高效的实时检测能力,在多个目标检测任务中展现出卓越性能。本研究针对水果数据集进行训练和优化,该数据集包含丰富的水果图像样本&#…

Python世界:人生苦短,我用Python

Python世界:人生苦短,我用Python 前言Python优势Python缺点 前言 几句话说清,我们为啥要用Python? Python设计之初心,是为了解决编程门槛,让大家更聚焦业务实现,而非编程细节。当前人工智能火…

TensorFlow深度学习实战(3)——深度学习中常用激活函数详解

TensorFlow深度学习实战(3)——深度学习中常用激活函数详解 0. 前言1. 引入激活函数1.1 感知器1.2 多层感知器1.3 训练感知器存在的问题 2. 激活函数3. 常见激活函数3.1 sigmoid3.2 tanh3.3 ReLU3.4 ELU和Leaky ReLU 小结系列链接 0. 前言 使用激活函数…

Linux vi/vim 编辑器:功能强大的文本处理工具

Linux vi/vim 编辑器:功能强大的文本处理工具 引言 Linux 系统中的 vi/vim 是一种功能强大的文本编辑器,它广泛应用于程序员、系统管理员和其他需要处理文本文件的用户群体中。vi 是 visual interface 的缩写,而 vim 则是 vi improved 的缩…

C#设计模式(行为型模式):状态模式

C#设计模式:状态模式 在软件开发中,我们经常会遇到对象的行为取决于其状态的情况。例如,一个订单对象可能处于“待支付”、“已支付”、“已发货”等不同状态,而每个状态下订单的行为(例如是否可以支付、是否可以发货…

数据结构C语言描述9(图文结合)--二叉树和特殊书的概念,二叉树“最傻瓜式创建”与前中后序的“递归”与“非递归遍历”

前言 这个专栏将会用纯C实现常用的数据结构和简单的算法;有C基础即可跟着学习,代码均可运行;准备考研的也可跟着写,个人感觉,如果时间充裕,手写一遍比看书、刷题管用很多,这也是本人采用纯C语言…

Leetcode打卡:设计一个ATM机器

执行结果:通过 题目 2241 设计一个ATM机器 一个 ATM 机器,存有 5 种面值的钞票:20 ,50 ,100 ,200 和 500 美元。初始时,ATM 机是空的。用户可以用它存或者取任意数目的钱。 取款时&#xff0c…

0. 总框架

第1阶段,c语言层面 (1) c语言基本语法:结构体、指针、宏 (2) 数据结构和算法:hash,rbtree,b/btree,linked list(链表) 1.2.1-1部分数据结构的说明-CSDN博客 1.2.1-2部分数据结构的说明02_链表-CSDN博客…

比Qt更适合小公司的C++界面开发框架wxWidgets

C++行业里,如果一家小公司对某些费用方面问题特别敏感,而且你做的产品属于消费品领域,那么你最好还是选择wxWidgets来替代Qt。 Qt的好处是保罗大部分常用的开发库,它不用你会C++ STL,因为它本身就很成熟,你无需使用STL库去补充功能,所以我经常看到很多小公司的招聘信息…

源码理解 UE4中的 FCookStatsManager::FAutoRegisterCallback RegisterCookStats

官方文档:https://dev.epicgames.com/documentation/zh-cn/unreal-engine/API/Runtime/Core/ProfilingDebugging/FCookStatsManager文档中的注释: When a cook a complete that is configured to use stats (ENABLE_COOK_STATS), it will broadcast this…

vscode如何离线安装插件

在没有网络的时候,如果要安装插件,就会麻烦一些,需要通过离线安装的方式进行。下面记录如何在vscode离线安装插件。 一、下载离线插件 在一台能联网的电脑中,下载好离线插件,拷贝到无法联网的电脑上。等待安装。 vscode插件商店地址:https://marketplace.visualstudio.co…

趋炎附势的合理性

趋炎附势常被视为负面行为,例如某个人当上了大官,之前不没有联系的人都开始联系了,为的是以后有需要帮忙的事可以找他。这样趋炎附势的行为往往令人不齿,但是仍然有一定的合理性,主要在社会资源优化配置、优质个体的选…