【SQL】外连接 LEFT JOIN

目录

一.内连接与外连接

   1.内连接(inner join)

   2.外连接(outer join)

二.两表连接

1.我们先来试试看内连接:

2.我们再来试试外连接

三.单表外连接

四.总结


一.内连接与外连接

  先得介绍内连接和外连接两个概念:

     要将两张表连接,有两种方式一种是内连接(inner join),第二种是内连接(outer join)

   1.内连接(inner join)

     这种连接需要:A,B表值都存在情况

   2.外连接(outer join)

     

外连接又分左外连接和右外连接

左外连接是取A表全部,B表没有对应的值,则为null

右外连接是取B表全部,A表没有对应的值,则为null

语法:

SELECT 列名
FROM 左表
LEFT JOIN 右表
ON 左表.列名 = 右表.列名;

   这样介绍概念可能还是比较抽象,来看下面的例题: 


二.两表连接

 例题链接:https://leetcode.cn/problems/combine-two-tables/description/

1.我们先来试试看内连接:

select firstname,lastname,city,state
from person,address
where person.personid=address.personid

    我们可以发现输出结果比答案结果少了一个Allen的数据,我们观察上面的Person和Address表

我们发现Address表中的personid没有allen的id,由于内连接是取交集所以Allen没有被选中。

   这就是在前面概念中叙述的:A,B表值都存在情况

2.我们再来试试外连接

select firstname,lastname,city,state
from person left join address
on person.personid=address.personid;

    这样输出就对了。

         我们可以可以这样理解外连接,当左外连接时固定住左表,去右表中依据on之后跟的条件去寻找符合条件的行,若是没寻找到则在那行写null,即左表原有的数据全部不变,只是通过右表扩充列。 right join 则反之。

      这就是前面说的:左外连接是取A表全部,B表没有对应的值,则为null


三.单表外连接

    例题链接:https://leetcode.cn/problems/rising-temperature/description/

     单表外连接用于检索一个表中的所有数据

 

这题用内连接也能做出来,但是消耗的时间比外连接高太多了

上面时内连接,下面时外连接

所以我们直接来讲怎么用外连接解决这题:

select w1.idfrom weather w1left join weather w2on datediff(w1.recordDate, w2.recordDate) = 1  #把每一天与前一天连接where w1.temperature > w2.temperature   #where 选择下温度大的

所以在有的时候用left join可以优化计算时间


四.总结

  

       内连接和外连接都是用于连接多个表的查询操作。内连接是指只返回两个表中符合条件的行,而外连接则会返回符合条件的行以及不符合条件的行。

      当需要查询两个表中有关联的数据,并且只想返回符合条件的数据时,应该使用内连接。内连接可以通过使用JOIN关键字或者WHERE子句来实现。

       当需要查询两个表中有关联的数据,并且希望返回符合条件的数据以及不符合条件的数据时,应该使用外连接。外连接可以分为左外连接、右外连接和全外连接,分别表示返回左表中的所有数据、返回右表中的所有数据以及返回两个表中的所有数据。

       因此,根据查询需求来选择使用内连接或外连接,可以更有效地获取所需的数据。

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

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

相关文章

第199题|关于函数的周期性问题|函数强化训练(六)|武忠祥老师每日一题 5月24日

解题思路:解这道题我们要用到下面这个结论 f(x)连续,以T为周期时,原函数以T为周期的充分必要条件是: (A) sin x显然是以π为周期的,我们可以看到并不等于0,根据结论,A的原函数显然不是周期函数。 (B) 的…

memmove使⽤和模拟实现

一:memmove的使⽤ 这是memmove在库里的定义,具体可在cplusplus.com查看 void * memmove ( void * destination, const void * source, size_t num ) • 和memcpy的差别就是memmove函数处理的源内存块和⽬标内存块是可以重叠的。 • 如果源空间和⽬标…

你以为的私域是真正的私域嘛??你的私域流量真的属于你嘛?

大家好 我是一个软件开发公司的产品经理 专注私域电商行业7年有余 您的私域流量是真正的属于你自己嘛? 私域的定义 私域的界定:一个互联网私有数据(资产)积蓄的载体。这个载体的数据权益私有,且具备用户规则制定权…

Mysql 备份恢复 mysqldump与xtrabackup备份

1.1 备份的原因 备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之百的数据 (取决于备份周期),但至少能将损失降到最低。衡量备份恢复有两个重要的指标:恢复点目标(RPO) 和恢复时间目标(RTO)&…

数据库常用命令(1)

DML 1.添加数据(insert into) insert into 表名 values (值1,值2....); 表示成功运行: 2.修改数据(update) update 表名 set 字段名1值1,字段名2值2.....【where条件】 3.删除数据&#xff0…

元年科技数据智能研发部负责人张亚东受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 北京元年科技股份有限公司数据智能研发部负责人张亚东先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾,演讲议题为“大模型时代,AI创新型工具提升项目管理效率”。大会将于6月29-30日在北京举办,敬请关注&a…

jmeter之HTTP请求和查看结果树

一、HTTP请求作用: 可以发送post或get请求等请求可以向服务器发送参数或消息体数据可以进行文件上传 HTTP请求:是线程组内的取样器最常用的的一个原件 二、查看界面 添加一个HTTP请求:选择线程组–添加–取样器–HTTP请求 默认界面 名称和…

ThreadLocal为什么会导致内存泄漏?

问题引出: ThreadLocal是为了解决什么问题而产生的? ThreadLocal发生内存泄漏的根本原因是什么? 如何避免内存泄漏的发生?定义 为了解决多个线程同时操作程序中的同一个变量而导致的数据不一致性的问题。   假设现在有两个线程A…

如何获取一个城市或者一个区域的玫瑰风向图?

玫瑰风向图是一种直观展示风向和风速的图形工具,它在气象学、城市规划、农业等领域都有广泛的应用。那么,如何获取某个城市或某个区域的玫瑰风向图呢? 首先,我们可以借助互联网资源获取玫瑰风向图。现代网络技术发达,…

前端 防抖和节流

在前端开发中,防抖(Debounce)和节流(Throttle)是两种常用的性能优化技术,尤其在处理频繁触发的事件时显得尤为重要。无论是在用户输入、窗口调整大小,还是滚动事件中,这两种技术都可…

3D 生成重建011-LucidDreamer 优化SDS过平滑结果的一种探索

3D 生成重建011-LucidDreamer 优化SDS过平滑结果的一种探索 文章目录 0论文工作1论文方法2 效果 0论文工作 文本到3D生成的最新进展标志着生成模型的一个重要里程碑,为在各种现实场景中创建富有想象力的3D资产打开了新的可能性。虽然最近在文本到3D生成方面的进展…

自建公式,VBA在Excel中解一元一次方程

自建公式,VBA在Excel中解一元一次方程 文章目录 前言一、运行效果图二、操作思路三、代码1.去除方程中未知数,将未知数转为“*0”2.计算方程中常数3.计算方程中未知数的系数一,先将未知数替换成“*1”4.计算方程中未知数的系数二5.计算方程得数前言 小学必考内容:一元一次…

掌握Python基本语法的终极指南【基本语法部分】

一、基本语法部分 1.简单数据类型 1.1字符串类型及操作 字符串访问: 1.索引访问 mystr"Hello world" #索引访问 print(mystr[0]) #H print(mystr[-1]) #d print(mystr[-7]) #o print(mystr[6]) #w 2.切片访问 [头下标:尾下标] &#x…

齐护K210系列教程(三十二)_在线模型训练

在线模型训练 概念理解准备工作1 采集图像1.1 图像要求1.2 使用K210采集图片 2 标注图像3 打包数据集4 上传数据4.1创建项目4.1.1图像分类创建项目4.1.2图像检测创建项目 4.2上传数据4.2.1分类检测上传数据4.2.2图像检测上传数据 5 训练模型6 部署模型以及测试7 测试效果7.1图像…

leetcode 152. 乘积最大子数组

. - 力扣(LeetCode) 给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续 子数组 (该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 测试用例的答案是一个 32-位 整数。 示例 1: 输入…

MongoDB关系处理:优化数据管理、提升性能的最佳实践

MongoDB 是一种 NoSQL 数据库,它使用文档模型来存储数据,这与关系型数据库(RDBMS)有显著不同。本文将详细介绍 MongoDB 中的关系处理,包括基本语法、命令、示例、应用场景、注意事项和总结。 基本语法 文档和集合 M…

30.静态代码分析工具clang-tidy

文章目录 基本介绍安装clang-tidy使用clang-tidy配置文件和格式文件配置文件格式文件使用配置文件和格式化文件 在代码中设置排除clang-tidy检测reference 欢迎访问个人网络日志🌹🌹知行空间🌹🌹 基本介绍 clang-tidy 是一个基于…

JDBC总结

目录 JDBC(java database connection) JDBC连接数据库步骤: 1. 在项目中添加jar文件,如图所示 2.加载驱动类 向数据库中插入数据代码示例: 第一种: 第二种: 查询操作 : 第一种: 第二种: JDBC(java database connection) java数据库连接.api(应用程序编程接口) ,可…

Java中的垃圾回收机制

在Java编程语言中,垃圾回收(Garbage Collection, GC)机制是内存管理的一个核心部分。它的主要目标是自动释放那些不再被程序使用的对象所占用的内存空间,从而防止内存泄漏,并确保程序的稳定运行。下面,我将…

一文讲清!传统企业的进销存管理难题该怎么解决?

有没有开源的进销存软件啊? 确实,市面上存在不少开源的进销存软件。但客观地讲,开源软件往往面临着安全隐患,因为代码公开,容易成为黑客攻击的目标。此外,开源软件的功能模块通常较为固定,难以…