MySQL—多表查询—自连接

一、引言

自连接,顾名思义就是自己连接自己。

自连接的语法结构:

表 A 别名 A join 表 A 别名 B ON 条件 ...;

注意

1、这种语法有一个关键字:join

2、自连接查询可以是内连接的语法,可以是外连接的语法(当然包括左外连接和右外连接)

接下来去工具 DataGrip 通过两个需求去演示一下 自连接查询 的语法。 

二、实操

(0)两张表的结构以及数据展示

员工表 emp

部门表 dept

(1)查询员工及其所属领导的名字

1、分析

在表 emp 中没有直接的表示出某某的直属领导是谁,只有一个所属领导id号(managerid)

而对于一个企业的领导,它也是企业的员工。

表结构:emp。

单靠单表查询是不可能完成所要的需求的。所以要对自己进行子连接查询。

把emp看成两张表:员工表和领导表(仔细深思一下)

这就是它们之间的编写思路

2、编写SQL语句
/*类似于内连接,有null 的值时没有显示*/
SELECT a.name,b.name FROM emp AS a JOIN emp AS b WHERE a.managerid=b.id;

(2)直询所有员工emp及其领导的名字emp ,如果员工没有领导,也需要查询出来

1、分析

如果这个员工的字段 managerid = null ,也需要把这个员工查询出来。

这时只能用到外连接

因为内连接只能查询到交集的数据,外连接才会包含左表或者右表的数据

表结构:emp a , emp b

2、编写SQL语句

/*查出直属领导为 null 也要显示*/
SELECT a.name AS '员工',b.name AS '领导' FROM emp AS a LEFT OUTER JOIN emp AS b ON a.managerid=b.id;

这样就通过两个自连接查询完成两个需求。

在自连接查询的时候,一定注意要给表名起别名。

要不然我们会不清楚条件,以及返回的字段到底是哪一张表当中的字段。

这篇博客的内容就结束了。

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

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

相关文章

【游戏】Goc赚钱模拟器1.0版

Hello!大家好,我是学霸小羊,今天分享一个Goc游戏。 //注:以下代码为Goc原创代码。 大家可以在下面网址写入代码www.51goc.com慧通教育http://www.51goc.com注:Goc编辑器路径: www.51goc.com ➡ 登录 ➡ 游客登陆 ➡…

Three.js加入到可视化大屏,看看能否惊艳到你?

three.js 在可视化大屏上可以实现各种三维场景和动画效果,可以根据具体需求进行定制化开发,并结合其他技术,如数据可视化、交互设计等,实现更加丰富的可视化效果。 three.js 是一个基于 WebGL 的 JavaScript 3D 库,可…

循迹模块之循迹小车

1.TCRT5000传感器 TCRT5000传感器的红外发射二极管 不断发射红外线 1.1 当发射出的红外线没有被反射回来或被反射回来但强度不够大时, 红外接收管一直处于关断状态,此时模块的输出端为高电平,指示二极管一直处于熄灭状态 1.2 当被检测物体…

跳跃游戏二

方法一:(双指针法)此题参考跳台阶问题,题目要求求到达最后一个点的最小跳跃次数,那么我们就可以从最后一个往前推,先看谁能离得最远,并且能跳到最后一个。假设i位置是离最后一个位置最远&#x…

【新书上市】图像画质算法与底层视觉技术

图书主页:https://book.douban.com/subject/36895899/ 购买链接:https://item.jd.com/10105601481762.html 内容介绍 本书主要介绍了图像画质相关的各类底层视觉任务及其相关算法,重点讲解了去噪、超分辨率、去雾、高动态范围、图像合成与图…

Python语法详解module3(组合数据类型列表、元组、字典、集合详细用法)

目录 一、列表列表的创建多维列表列表的访问和修改列表的添加和删除列表的遍历使用 for 循环遍历使用 while 循环遍历同时遍历索引和元素列表推导式 常用的列表函数len()sort()reverse()index()count()extend()clear() 二、元组创建元组访问元组元素元组的不可变性元组的优点元…

Scalable Diffusion Models with Transformers

Metahttps://github.com/facebookresearch/DiT/tree/main?tabreadme-ov-file 问题引入 transformer架构的latent diffusion model,有较好的延展性并是sota; methods patchify:原图片 I ∈ R H W 3 I\in\mathbb{R}^{H\times W\times 3…

【微信小程序】模板语法

数据绑定 对应页面的 js 文件中 定义数据到 data 中: 在页面中使用 {{}} 语法直接使用: 事件绑定 事件触发 常用事件: 事件对象的属性列表(事件回调触发,会收到一个事件对象 event,它的详细属性如下&…

免费,C++蓝桥杯等级考试真题--第10级(含答案解析和代码)

C蓝桥杯等级考试真题--第10级 答案:D 解析:数组是一种线性数据结构,其特点是数组中的元素在内存中占据一段连续的存储空间,每个元素通过索引(下标)访问,索引起始通常是0。 数组的长度在声明时…

操作符详解

一、移位操作符 1.1左移操作 左边丢弃,右边补0 1.2右移操作 算数右移:右边丢弃,左边补原符号位 逻辑右移:右边丢弃,左边补0 int main() {int a -1;int b a >> 1;printf("b%d\n",b);return 0; } 原码…

厘米级精确定位,开启定位技术新时代

定位技术在当前这个科技发展时代可以说是以以前所未有的速度在发展,其中厘米级精确定位技术更是成为当前的研究热点和实际应用中的佼佼者。这项技术以其高度的精准性和广泛的应用前景,正在逐渐改变我们的生活和工作方式。接下来我们跟着深圳沧穹科技一起…

在vue项目中使用markdown-it回显markdown文本

前言 其实有很多插件都是可以用来回显markdown文本的,这个插件也是其中之一。 文档地址:markdown-it | markdown-it 中文文档 这个文档在vue2和vue3里面都可以使用,所以还是比较推荐的 使用 安装 npm install markdown-it --save 应用 <template><div><…

微服务开发与实战Day02 - Docker

一、Docker快速入门 快速构建、运行、管理应用的工具 安装部署教程&#xff1a;Docs 1. 部署MySQL 测试连接&#xff1a; 镜像和容器 当我们利用Docker安装应用时&#xff0c;Docker会自动搜索并下载应用镜像&#xff08;image&#xff09;。镜像不仅包含应用本身&#xff…

天润融通,荣获2024中国AI应用层创新企业

AI技术发展日新月异&#xff0c;可谓“AI一天&#xff0c;人间一年”。 从2023年到2024年&#xff0c;短短一年的时间&#xff0c;大模型技术的发展就已经逐步从追求“技术突破”转向了追求“应用落地”。如何将大模型的技术与企业的生产、运营、销售等场景结合起来&#xff0…

java版CRM客户关系管理系统源码:CRM客户关系管理系统的功能详解

CRM客户关系管理系统是一款功能全面的客户管理工具&#xff0c;旨在帮助企业和销售团队提高客户管理效率&#xff0c;优化销售流程。该系统包含多个模块&#xff0c;覆盖了从线索到回款的全流程管理&#xff0c;为用户提供了一个集成化的客户关系管理平台。 一、待办事项模块&a…

Docker 部署 Redis Cluster 高性能高可用分片集群

文章目录 1、环境准备2、Cluster 集群讲解2.1、Cluster 介绍2.2、Cluster 和哨兵模式区别2.3、Cluster 如何分散存储数据 3、Cluster 搭建流程3.1、安装 Docker3.2、启动 Redis 容器3.3、创建 Cluster 集群 4、Cluster 集群测试4.1、读写操作4.2、故障转移 1、环境准备 准备6台…

基于Keil5移植LVGL,懂得原理之后什么开发板都可以移植

今天我们来移植一下LVGL&#xff0c;其实LVGL和Qt差不多&#xff0c;操作起来都很简单&#xff0c;看着官方文档都可以自己学习使用。 难就难在移植上面&#xff0c;移植个LVGL花了我三天才弄明白&#xff08;虽然最后发现在一个很弱智的问题上耽误了我两天&#xff09;&#…

oracle 打补丁遇到 check “CheckActiveFilesAndExecutables“ failed报错处理方法

该报错是因为打补丁的时候停止集群没有停止干净进程导致的 问题 处理方法 强制停止打补丁所在节点集群服务 查看grid和oracle相关进程是否停止干净&#xff0c;发现有未关闭的进程手动kill 处理完毕继续打补丁即可

跟着大佬学RE(四)

几个API函数 [ACTF新生赛2020]Universe_final_answer 一个很多方程组的函数&#xff0c;还有一个嗯&#xff0c;对input进行一些操作的函数 嗯&#xff0c;确实方程解出来得到 key 直接运行就可以得到 flag 了&#xff0c;不过还是去分析了一下。 v22 __readfsqword(0x28u);…

【深度学习】安全帽检测,目标检测,Faster RCNN训练

文章目录 资料环境尝试训练安全帽数据训练测试预测全部数据、代码、训练完的权重等资料见&#xff1a; 资料 依据这个进行训练&#xff1a; https://github.com/WZMIAOMIAO/deep-learning-for-image-processing/tree/master/pytorch_object_detection/faster_rcnn ├── bac…