SQL的多表联查

这里我先附上两张表的数据:

Orders 表:

OrderIDCustomerID
13
21
32
4NULL

Customers 表:

CustomerIDCustomerName
1Alice
2Bob
3Charlie
4David

INNER JOIN 🤝

概念: INNER JOIN(内连接)返回两个表中匹配的记录。如果某条记录在其中一个表中没有匹配项,那么它就不会出现在结果集中。

SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

结果:

OrderIDCustomerName
1Charlie
2Alice
3Bob

解释: 只显示了在两个表中都存在的匹配记录。订单4因为CustomerID为NULL,在Customers表中没有匹配,所以不显示。

LEFT JOIN 👈

概念: LEFT JOIN(左连接)返回左表(LEFT JOIN关键字左边的表)的所有记录,即使在右表中没有匹配。如果右表中没有匹配,则结果为NULL。

SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
LEFT JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

结果:

OrderIDCustomerName
1Charlie
2Alice
3Bob
4NULL

 解释: 显示了Orders表中的所有记录,对于CustomerID为NULL的订单4,CustomerName为NULL,因为没有匹配的顾客信息。

RIGHT JOIN 示例 👉

概念: RIGHT JOIN(右连接)与LEFT JOIN相反,它返回右表(RIGHT JOIN关键字右边的表)的所有记录,即使左表中没有匹配。如果左表中没有匹配,则结果为NULL。

SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
RIGHT JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

结果:

OrderIDCustomerName
1Charlie
2Alice
3Bob
NULLDavid

 解释: 显示了Customers表中的所有记录,对于顾客David,因为没有对应的订单(OrderID为NULL),依然会被列出

FULL JOIN 示例 ↔️ (以支持的数据库为例)

由于不是所有数据库都直接支持FULL JOIN,这里提供一个概念上的说明和一个可能的解决方案(比如在MySQL中使用UNION)。

SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
FULL JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

概念上的结果:

OrderIDCustomerName
1Charlie
2Alice
3Bob
4NULL
NULLDavid

解释: 显示了OrdersCustomers表中的所有记录,两边没有匹配的部分用NULL填充。

总结:

  • INNER JOIN:匹配两边的记录,无匹配则不显示。
  • LEFT JOIN:以左表为主,左表所有记录均显示,右表无匹配则NULL。
  • RIGHT JOIN:以右表为主,右表所有记录均显示,左表无匹配则NULL。
  • FULL JOIN:展示两边所有记录,任一边无匹配则对应侧为NULL。

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

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

相关文章

解决深度确定问题:使用不相交集合森林

解决深度确定问题:使用不相交集合森林 引言不相交集合森林(DSF)基础按秩合并与路径压缩深度确定问题的解决方案实现MAKE-TREE修改FIND-SET实现FIND-DEPTH实现GRAFT分析最坏情况运行时间结论参考文献 引言 在计算机科学中,树结构是…

时空扭曲:重温相对论的终极挑战,探寻真理的脚步

大家都知道,相对论是爱因斯坦提出的划时代理论,为人类认知时空和引力做出了革命性贡献。但这个理论真的万无一失吗?近日,一项新研究提出了测试时间扭曲的新方法,或许能让我们重新审视相对论在宇宙大尺度上的适用性。 时…

HTML5好看的通用网站模板源码

文章目录 1.设计来源1.1 主界面1.2 模板菜单1 界面1.3 模板菜单2 界面1.4 模板菜单3 界面1.5 下拉菜单1 界面1.6 下拉菜单2 界面1.7 模板菜单4 界面1.8 模板菜单5 界面1.9 界面底部 2.效果和源码2.1 动态效果2.2 源码目录2.3 源代码 源码下载 作者:xcLeigh 文章地址…

Python 造数据神器Faker

大家好,在编写代码过程中,我们经常需要一些假数据来进行测试或者演示。手动创建这些数据不仅耗时,而且容易出错。幸运的是,Python有一个非常有用的库叫做Faker,它可以生成各种类型的假数据,从名字、地址到公…

【驱动】ARM手册引脚寄存器地址(绝对物理地址)查找(以AM437x为例)

1、问题描述 在配置设备树时,经常遇到如下宏: XXX_IOPAD(pa, val)实际定义如下: DRA7XX_CORE_IOPAD(pa, val) AM33XX_IOPAD(pa, val) DM816X_IOPAD(pa, val) DM814X_IOPAD(pa, val) AM4372_IOPAD(pa, val)一般注释中的说明如下: 原文:Macro to allow using the absol…

md5和byte64字符串加密

说明:最近碰到一个需求,网络请求,传递json的时候,必须加密,对字符串加密,然后前端去解密字符串,然后解析json,展示数据,可逆 step1: Md5加密方式 package com.example.…

Java技术精粹:高级面试问题与解答指南(一)

Java 面试问题及答案 问题1:请解释Java中的多态性,并给出一个例子。 答案: 多态性是Java中的一个重要特性,它允许一个引用类型可以指向多种实际类型的对象,并且可以通过这个引用调用实际对象的方法。多态性主要通过继…

JAVA:常见的加密算法简介

一、前言 加密算法是指将明文信息转变为密文信息的过程,即将信息从可读形式(明文)转换为加密形式(密文)的过程。在加密过程中,信息通过加密算法和加密密钥被加密处理,加密后的信息(密…

【代码随想录算法训练Day17】LeetCode 110. 平衡二叉树、LeetCode 257.二叉树的所有路径、LeetCode 404.左叶子之和

Day17 二叉树第四天 LeetCode 110. 平衡二叉树【后序遍历】 平衡二叉树仍是后序遍历,就是获取左右子树的高度然后作差,如果子树就不平衡,那么就直接将-1向上传给父节点,否则该数的高度为左右子树高度的最大值1。 class Solutio…

day 38 435.无重叠区间 763.划分字母区间 56. 合并区间 738.单调递增的数字 968.监控二叉树

435.无重叠区间 思路 为了使区间尽可能的重叠所以排序来使区间尽量的重叠,使用左边界排序来统计重叠区间的个数与452. 用最少数量的箭引爆气球恰好相反。 代码 class Solution {public int eraseOverlapIntervals(int[][] intervals) {Arrays.sort(intervals,(a,…

如何在cPanel面板中开启盗链保护

本周有一个客户,购买Hostease的主机, 客户购买的是Linux虚拟主机,带cPanel面板的。询问我们的在线客服,如何可以防止他的网站上的图片不被盗用。cPanel的盗链保护功能可以帮助客户防止图片被盗链。 盗链(Hotlinking&a…

.NET Core与.NET Framework的区别

.NET Core和.NET Framework是微软提供的两种主要的开发平台,用于构建各种应用程序。虽然它们都基于.NET技术,但在架构、平台支持、性能、开发工具和社区支持等方面存在显著差异。本文将详细探讨.NET Core和.NET Framework的主要区别,帮助开发…

呆马科技----构建智能可信的踏勘云平台

近年来,随着信息技术的快速发展,各个行业都在积极探索信息化的路径,以提升工作效率和服务质量。智慧踏勘云平台是基于区块链和大数据技术构建的全流程智慧可信踏勘解决平台。平台集远程视频、数据显示、工作调度、过程记录为一体,…

有容量限制的车辆路径规划问题(Capacitated Vehicle Routing Problem)

在看matlab的时候发现了这篇文章https://www.frontiersin.org/articles/10.3389/fict.2019.00013/full 仔细阅读一下。(英语渣渣,自学用) The Capacitated Vehicle Routing Problem (CVRP) is an NP-optimization problem (NPO) that has been of great interest …

图像处理之边缘检测(C++)

图像处理之边缘检测(C) 文章目录 图像处理之边缘检测(C)前言一、Roberts算子1.原理2.代码实现 二、Sobel算子1.原理2.代码实现 三、Prewitt算子1.原理2.代码实现 四、Laplacian算子1.原理2.代码实现 五、LOG算子1.原理2.代码实现 …

完全匹配企业需求的替代FTP升级软件怎么找

企业在处理数据传输时,效率和安全性是关键。尽管传统的FTP曾被广泛采用,但因其传输慢、安全性不足和难以管理等问题,已不再满足现代企业的需求。许多企业正在寻找能够满足其需求的FTP替代方案,但市场上选择众多,找到合…

Python01:初入Python(Mac)

Python环境准备 下载Python:官网https://www.python.org/ 下载PyCharm:官网https://www.jetbrains.com/pycharm/download Python与PyCharm的关系 Python(解释器):机器语言—>翻译人员–>翻译成电脑能读懂的 PyC…

STM32应用开发进阶--SPI总线(7脚OLED中景园ss1306+HAL库_硬件SPI/软件模拟SPI)

实现目标 1、掌握SPI总线基础知识; 2、会使用软件模拟SPI总线和STM32硬件SPI总线; 3、 学会STM32CubeMX软件关于SPI的配置; 4、掌握OLED显示屏驱动; 5、具体目标:(1)用STM32硬件SPI驱动OLED显示“你好…

JAVA实现定时任务 从指定时间开始每隔 n 天执行一次, 可删除重设

本文描述的使用 Java 自带的 ScheduledExecutorService 来实现这个业务,直接看代码 涉及到的参数说明: ScheduledTaskManager 类负责管理定时任务的创建、取消和重设。scheduleTask 方法用于创建定时任务。它接受任务名称、开始时间、执行间隔和任务本身作为参数。cancelTask 方…

抽烟行为检测:从传统巡查到智能算法

在当前人工智能和计算机视觉技术的迅猛发展下,基于视觉分析的抽烟行为检测算法成为一种高效的技术手段。此类算法通常依赖于深度学习模型,特别是卷积神经网络(CNN),通过对摄像头捕捉的视频流进行实时分析,能…