SQL中的——左连接(Left join)、右连接(Right join)、内连接(Inner join)

news2024/12/27 0:32:22

前言

最近有一个开发需求,需要实现一个复杂年度报表,前后端都是博主开发,这里的业务逻辑比较复杂,也很锻炼sql能力,这里博主也将表的内外连接做了一个整理分享给大家

一、概念

首先还是介绍一下这三个的定义

1.Left join:即左连接,是以左表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将左表所有的查询信息列出,而右表只列出ON后条件与左表满足的部分。左连接全称为左外连接,是外连接的一种。

2.Right join:即右连接,是以右表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将右表所有的查询信息列出,而左表只列出ON后条件与右表满足的部分。右连接全称为右外连接,是外连接的一种。

3.Inner join:即内连接,同时将两表作为参考对象,根据ON后给出的两表的条件将两表连接起来。结果则是两表同时满足ON后的条件的部分才会列出。

MySQL中没有全外连接,所以这里没做解释了。
 

二 、举例

表table_a

 表table_b

------------------------------------------------------分割线-----------------------------------------------------------------

Left join:左连接

select *from table_a left join table_b on table_a.id=table_b.id;

 结果


 Right join:右连接

SQL语句:

select * from table_a  right join  table_b on   table_a.id=table_b.id;

结果


 


 Inner join:内连接

SQL语句:

select * from table_a  inner join table_b on table_a.id=table_b.id;

结果


 


总结

根据上面的举例,看起来是不是清晰明了多了,而且也更有对比性了。如果还是觉得只是这会儿懂了,但是用起来还是觉得有点难的话,就下面这种集合思维,大头也是最近才发现,这样想的话就会简单很多了。

我们有两个表:A和B,那么就分别将其当做一个集合

那么我们的左右外连接和内连接就相当于变成了这样↓↓↓

A Left join B-> A (根据返回需求 需连接上B中与A等条件的部分)

A Right join B -> B(根据返回需求 需连接上A中与B等条件的部分)

A Inner join B -> A∩B(根据返回需求 需连接上A与B等条件的部分)


————————————————
原文链接:https://blog.csdn.net/qq_46416934/article/details/126080121 CSDN博主「普通网友」

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

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

相关文章

C#难点语法讲解之abstract---从应用需求开始讲解

一、背景故事 我们正常写的脚本,一般都是非常完整的,脚本完整意味着需求完整。 例如,我是售货员,现在苹果5元,梨子3元,西瓜20元, 一个人,来买了5个苹果,4个梨子&#xf…

springcloud二回头

Spring Cloud 一种微服务,以往的单体项目在一定程度的累积后,一些服务需要进行拆分,独立进行开发,然后再合起来,之前的是装成一个包进行部署 不同的搭配: spring cloud和boot的对应版本: Rest…

JavaScript 内置对象 数据类型

目录 JavaScript 内置对象 1.内置对象 2.查文档 2.1MDN 2.2 如何学习对象中的方法 3.Math对象 3.1Math 概述 3.2随机数方法 random() 4. 日期对象 4.1Date 概述 4.2Date() 方法的使用 4.3 日期格式化 4.4获取毫秒的总的毫秒形式 5.数组对象 5.1数组对象的创建 5…

1. Netty核心功能与线程模型详解

Netty 1. 认识Netty2. 第一个Netty程序 本文是按照自己的理解进行笔记总结,如有不正确的地方,还望大佬多多指点纠正,勿喷。 课程内容: 01、Netty核心组件快速了解 02、Hello,Netty! 03、深入理解Channel、EventLoop(Group) 04、深…

MySql的使用

目录 一、安装与启动1.1 Ubuntu下的使用1.2 Mac下的使用 二、MySQL图形化管理工具的使用三、数据完整性3.1 数据类型3.2 约束 四、常用的sql语句4.1 数据库操作4.2 数据库表操作1.查看当前数据库中所有表2.查看建表的数据结构3.创建表4.添加字段5.修改字段6. 删除字段7. 查看表…

nodejs之net模块的使用

vscode的底层ipc通讯都是基于node的net模块进行封装,今天大概讲解下net模块的使用 官方文档地址:https://nodejs.cn/api/net.html net模块的作用 net模块提供了基于流的方式构建tcp或ipc服务器和客户端的能力。 node:net 模块提供异步网络 API&#x…

ChatGPT发展与技术基础

一、ChatGPT发展 【ChatGPT——GPT3.5】 诞生于:2022 年 11 月 类型:对话场景的大语言模型 特点:更贴近人的方式与使用者互动;在理解人类意图、精准回答问题、流畅生成结果方面远超人类预期。 功能:可以回答问题、…

bug--两个表格,数据来自于同一个抽屉表格,现在让两个表格的数据 不能一样--处理checked 和 disabled

步骤一、拿到表格数据 步骤二、处理 checked,要区分是A表 还是B表,这个区分要在 A表、B表 数据展示的组件里(根源)区分 : 点击A表,抽屉表格中A 已选的状态 是 checked 且 disabled,B 已选的 抽…

HCIA复习一

OSI七层模型 7.应用层: 用于人机交互,将抽象语言转化为编码; 6.表示层: 将编码转换为二进制;(加解密,压缩解压缩) 5.会话层: 管理通信双方的会话,细分为…

数模笔记6.30

目录 一、基础 建模步骤: 论文格式: 写作过程: 赛题类型: 二、优化类模型 2.1简单的优化模型 2.2数学规划模型 三、Lingo 一、基础 建模步骤: 找目标 找条件(变量、常量、自己的假设&#xff09…

Tomcat的优化多实例部署

一.tomcat核心组件模块 1.web容器:接受.响应请求 2.展示动态页面 2..JSP容器:翻译java---》servlet 3.serverlet容器:serverlet代码格式是用于JSP容器处理 简述: web容器 :1.接受、响应请求 2.展示动态页面 JSP容…

python之 flask 框架

创建安装虚拟环境 两种方法 第二种 # 先打开cmd 中断 # 查看virtual是否安装过 pip show virtualenv # 安装 pip install virtualenvwrapper-win # workon 查看虚拟环境 vorkon # 切换虚拟环境 # workon 虚拟环境 # mkvirtualenv 创建新的虚拟环境 mkvirtualenv falsk2…

MySQL 字符集与比较规则

字符集与比较规则 一. 字符集相关操作1. 查看字符集1.1 查看数据库当前字符集配置1.2 查看某数据库/数据表字符集 2. 修改字符集2.1 全局修改字符集2.2 修改已有库表字符集 3. 字符集级别二. 比较规则1. 后缀表示含义2. 查看指定数据集比较规则3. 查看/修改数据库/表比较规则 一…

计算机视觉:窥探数字世界的眼睛

目录 简介: 一. 计算机视觉的起源与发展 二. 计算机视觉的应用领域 三. 计算机视觉的挑战与未来发展 结论: 简介: 计算机视觉(Computer Vision)是人工智能(AI)领域中的一个重要分支&#…

同一VLAN不同交换机之间的数据转发

实验环境: 思科模拟器,Cisco Packet Tracer 实验拓扑: 配置步骤: (1)配置四台PC的IP地址 双击PC选择Desktop,然后选择IP Configuration配置ip (2)配置交换机 双击交换…

登录校验-interceptor/拦截器

Interceptor 概念:拦截前端对后端的某些请求 使用步骤 自定义拦截器类,实现HandlerInterceptor接口,重写所有的方法(preHandle方法在controller执行之前执行、【postHandle、afterCompletion】在controller执行后执行&#xff0…

基于java,springboot的零食零售系统设计与实现

背景 本系统实现管理员:首页、个人中心、用户管理、零食分类管理、零食信息管理、订单评价管理、系统管理、订单管理,用户;首页、个人中心、订单评价管理、我的收藏管理、订单管理,前台首页;首页、零食信息、零食资讯…

Vue工程创建及应用

🙈作者简介:练习时长两年半的Java up主 🙉个人主页:程序员老茶 🙊 ps:点赞👍是免费的,却可以让写博客的作者开兴好久好久😎 📚系列专栏:Java全栈,…

Python Pandas之loc、iloc

df.loc 通过标签索引获取数据 df.iloc 通过位置索引获取数据

Airtest:Windows桌面应用自动化测试二【Airtest基于图像识别自动控制手机App流程】

Airtest基于图像识别自动控制手机App流程 一、Airtest基于图像识别自动控制手机App流程二、基于图像识别生成脚本有两种操作:三、Airtest基于Poco的UI组件自动化控制App流程四、Airtest实现手机群控操作 Airtest介绍与脚本入门 Airtest相关api操作 一、Airtest基于…