MySQL常见七种通用的Join查询练习题

news2024/10/5 6:40:26

准备数据库表 t_dept 和 t_emp

CREATE TABLE `t_dept` (
  `id` int NOT NULL AUTO_INCREMENT,
  `deptName` varchar(30) DEFAULT NULL,
  `address` varchar(40) DEFAULT NULL,
  `CEO` int DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb3
CREATE TABLE `t_emp` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `age` int DEFAULT NULL,
  `deptId` int DEFAULT NULL,
  `empno` int NOT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_dept_id` (`deptId`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb3

1. 所有有门派的人员信息 ( A、B两表共有)

SELECT * FROM t_emp a INNER JOIN t_dept b ON a.deptId=b.id;

2. 列出所有用户,并显示其机构信息 (A的全集)

SELECT * FROM t_emp a LEFT JOIN t_dept b ON a.deptId=b.id;

3. 列出所有门派(B的全集)

SELECT * FROM t_emp a RIGHT JOIN t_dept b ON a.deptId=b.id;

4. 所有不入门派的人员 (A的独有)

SELECT * FROM t_emp a LEFT JOIN t_dept b ON a.deptId=b.id WHERE a.deptId IS NULL;

5. 所有没人入的门派(B的独有)

SELECT * FROM t_emp a RIGHT JOIN t_dept b ON a.deptId=b.id WHERE a.deptId IS NULL;

6. 列出所有人员和机构的对照关系(AB全有)

MySQL Full Join的实现 因为MySQL不支持FULL JOIN,下面是替代方法

left join + union(可去除重复数据) + right join

union用于把来自多个select 语句的结果组合到一个结果集合中。

当使用union 时,mysql 会把结果集中重复的记录删掉,而使用union all ,mysql 会把所有的记录返回,且效率高于union 。

SELECT * FROM t_emp a LEFT JOIN t_dept b ON a.deptId=b.id
UNION
SELECT * FROM t_emp a RIGHT JOIN t_dept b ON a.deptId=b.id WHERE a.deptId IS NULL;

7. 列出所有没入派的人员和没人入的门派(A的独有+B的独有)

SELECT * FROM t_emp a LEFT JOIN t_dept b ON a.deptId=b.id WHERE a.deptId IS NULL
UNION
SELECT * FROM t_emp a RIGHT JOIN t_dept b ON a.deptId=b.id WHERE a.deptId IS NULL;

8. 求各个门派对应的掌门人名称

select * from t_dept a left join t_emp b on a.CEO=b.id;

9. 求所有当上掌门人的平均年龄

select avg(a.age) from t_emp a inner join t_dept b on a.id=b.CEO;

10. 求所有人物对应的掌门名称

方法一

select c.name,c.id,v.name from t_emp c 
    LEFT JOIN (select a.deptName,a.id,b.name from t_dept a left join t_emp b on a.ceo=b.id) v on c.deptId=v.id

方法二

select c.name,c.id,v.name from (select a.deptName,a.id,b.name from t_dept a left join t_emp b on a.ceo=b.id) v
    LEFT JOIN t_emp c on c.deptId=v.id

方法三

select a.name,a.id,c.name from t_emp a 
    LEFT JOIN t_dept b on a.deptId=b.id
    LEFT JOIN t_emp c on b.ceo=c.id
# No4
select a.name,a.id,(select c.name from t_emp c where c.id=b.ceo) from t_emp a 
    LEFT JOIN t_dept b on a.deptId=b.id

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

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

相关文章

面包多面包多面包多面包多面包多面包多

1.背景 1.摘要 本文是针对智慧政务中的文本数据挖掘应用的研究。通过建立基于三层网络结构的fastText文本分类模型,聚类量化模型,熵权评估模型解决了群众留言分类,热点问题挖掘,答复意见评价等问题。 针对群众留言分类问题&#…

《学习循环》---C语言

目录 前言: 1.while循环 1.1while循环的结构 1.2while语句中的break和continue 2.getchar配合循环清空缓冲区 3.for循环 3.1for循环的结构 3.2for循环中的break和continue 3.3for循环的注意事项 3.4使用多个循环变量控制for循环 4.do while循环 4.1do …

chrome 浏览器在 112 正式版本以及 114 canary 版本从 devtools 控制台复制文本不会复制高亮显示的文本?

问题 我的 chrome 浏览器版本如下:版本 112.0.5615.138(正式版本) (64 位) 今天我在写代码的时候报错了,看了一下控制台浏览器,是某个属性没有定义,然后我双击这个属性名称 ctrl c…

asp.net+C#大学生高校运动会比赛综合管理系统

目录 1 绪论 3 1.1 课题背景 3 1.2 课题目标 3 1.3 研究现状 3 1.4 论文工作内容以及结构安排 4 1.4.1 论文工作内容 4 1.4.2 论文结构安排 4 2 系统开发技术介绍 6 2.1 ASP.NET简介 6 2.2 Microsoft Visual Studio 2010平台 7 2.3 SQL Serve…

第16章_网络编程

第16章_网络编程 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 本章专题与脉络 1. 网络编程概述 Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程…

达梦数据迁移问题罗列

目录 一、前言 二、问题罗列 一、前言 最近小编接触到国产的数据库达梦数据库,然后在用达梦数据迁移工具MySQL迁移至达梦的时候遇到了一系列的问题现在罗列一下在这里。目前关于国产的数据库达梦这些资料比较少,希望能够帮到有需要的同志们&#xff01…

MySQL 服务的启动和停止

4.MySQL 服务的启动和停止_mysql数据库启停_头疼小宇的博客-CSDN博客

【网络编程】TCP

✨个人主页:bit me👇 ✨当前专栏:Java EE初阶👇 目 录 🔮一. TCP流套接字编程💿二. TCP中的长短连接📀三. 写一个 TCP 版本的 回显服务器-客户端 🔮一. TCP流套接字编程 ServerSock…

d2l 注意力评分函数 --附加mask_softmax讲解

本章节tensor处理操作也不少,逐个讲解下: 目录 1.mask_softmax 1.1探索源码d2l.sequence_mask 2.加性注意力 3.缩放注意力 1.mask_softmax dim-1表示对最后一个维度进行softmax .dim()返回的是维度数 对于需要mask的数,要用绝对值非…

FreeRTOS 任务创建与删除实验

本实验主要实现 FreeRTOS 使用动态方法创建和删除任务,本实验设计了四个任务,这四 个任务的功能如下表所示: 软件设计 1. 程序流程图 本实验的程序流程图,如下图所示: 2. FreeRTOS 函数解析 (1) 函数 xTaskCreate…

spring框架基础知识和基于XML的Bean对象的管理回顾

什么是spring框架? spring基本功能所必须的jar包就是这些 如何获取bean? IOC原理 上面耦合度太高了 改进使用工厂模式 上面并没有把耦合度降低到最低,使用反射 spring实现IOC的两种方式 BeanFactory和ApplicationContext IOC如何管理Bea…

5个方法,帮助你快速提高团队管理效率

团队中,大家看起来都很忙,但最终交付的结果却总是差强人意。会议那么多,但有效的却很少越管理,但偏偏有时候越管理越乱......相信以上这些问题,很多管理者都有遇到过,团队管理是一个项目中最关键的一环。好…

如何打造全流程数字化零工场景,实现零工管理一体化?

近年来,零工市场发展迅速,不仅为企业提供更低成本、更便捷的用工方式,也为劳动者就业提供更低门槛更灵活形式,发挥了就业「蓄水池」的重要作用。但由于零工经济模式下的用工形式非常灵活,企业想要管好零工并不容易。 …

短视频平台-小说推文(知乎)推广任务详情

知乎会员 知乎日结内测中,可能暂只对部分优质会员开放! 2023/03/29通知: 知乎拉新项目,由于内部测试转化较低,暂时下线,原有关键词出单不受影响。 1、关键词 1.1 选择会员文 在知乎【首页】或者【会员】里面选取,需…

PEIS体检系统全套源代码,C# 源码

医院体检信息系统PEIS源码,C# 源码,PEIS源码源码 文末获取联系! 系统概述 医院体检信息系统是专门针对医院体检中心的日常业务运作的特点和流程,结合数字化医院建设要求进行设计研发的一套应用系统。该系统覆盖体检中心的所有业务&#xff0…

使用nvm替换nvmw作为nodejs的版本切换(亲测)

之前的文章:同时使用vue2.0和vue3.0版本的采坑记录 安装的nvmw,今天想要用nvmw切换时,居然给我报错了: 然后我就走上了使用nvm替换nvmw之路。。 1.安装 nvm-windows下载 下载release版 中Assets中的包,window10&…

APIs -- DOM正则表达式

1. 介绍 正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象通常用来查找、替换那些符合正则表达式的文本,许多语言都支持正则表达式。正则表达式在JavaScript中的使用场景: 例如验证表单:用户名表单…

数据库的实际操作

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、关系模型二、数据库的操作 创建数据库查看数据库选择数据库删除数据库三、MySQL 数据库命名规范总结 一、关系模型 关系数据库是建立在关系模型上的。而关系模…

flutter学习之旅(一)

初学Flutter flutter官网和中文开发手册 安装flutter - windows 官方文档-windows flutter_windows_3.7.9-stable.zip 编辑环境变量 在 用户变量 一栏中,检查是否有 Path 这个条目: 如果存在这个条目,以 ; 分隔已有的内容,加入 f…

物联网能源能耗之场景控制原理

物联网能源能耗系统利用物联网技术,可帮助企业构建能耗分布,帮助操作人员实时监控各类关键参数,计算关键环节的能耗指标,和既定的能耗基线进行对比,得出能耗差距。 对于制造企业而言,物联网能源能耗不仅能…