MySQL 复合查询(重点)
个人主页:C++忠实粉丝
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C++忠实粉丝 原创MySQL 复合查询(重点)
收录于专栏[MySQL]
本专栏旨在分享学习MySQL的一点学习笔记,欢迎大家在评论区交流讨论💌
目录
基本查询回顾
多表查询
自连接
子查询
单行子查询
多行子查询
多列子查询
在 from 子句中使用子查询
合并查询
union
union all
基本查询回顾
前面我们讲解的 mysql 表的查询都是一张表进行查询,在实际开发中这远远不够。
如果大家对表的基本查询还是不太了解的话,可以自行去下面链接查看:
MySQL表的基本查询-CSDN博客
查询工资高于 500 或岗位为 MANAGER 的雇员,同时还要满足他们的姓名首字母为大写的J
select * from emp where (sal > 500 or job = 'MANAGER') and ename like 'J%'
按照部门号升序而雇员的工资降序排序
select * from emp order by deptno, sal desc;
使用年薪进行降序排序
select ename,sal*12+ifnull(comm,0) as '年薪' from emp order by 年薪 desc;
显示工资最高的员工的名字和工作岗位
select ename,job from emp where sal = (select max(sal) from emp);
显示工资高于平均工资的员工信息
select ename,sal from emp where sal > (select avg(sal) from emp);
显示每个部门的平均工资和最高工资
select deptno,format(avg(sal),2), max(sal) from emp group by deptno;
显示平均工资低于2000的部门号和它的平局工资
select deptno,avg(sal) as avg_sal from emp group by deptno having avg_sal < 2000;
显示每种岗位的雇员数,平均工资
select job,count(*),format(avg(sal),2) from emp group by job;
多表查询
实际开发中往往数据来自不同的表,所以需要多表查询。本节我们用一个简单的公司管理系统,有三张表 emp,dept,salgrade 来演示如何进行多表查询。
案例:
显示雇佣名、雇员工资以及所在部门的名字因为上面的数据来自 emp 和 dept 表,因此要联合查询

其实我们只要emp表中的 deptno=dept 表中的 deptno 字段的记录
select emp.ename,emp.sal,dept.dname from emp,dept where emp.deptno = dept.deptno
显示部门号为 10 的部门号,员工名和工资
select ename, sal,ename from emp ,dept where emp.deptno=dept.deptno and dept.deptno = 10;
显示各个员工的姓名,工资,及性别
select ename,sal,grade from emp,salgrade where emp.sal between losal and hisal.
自连接
自连接是指在同一张表连接查询
案例:
显示员工 FORD 的上级领导的编号和姓名(mgr 是员工领导的编号 -- empno)
使用的子查询
select empno,ename from emp where emp.empno = (select mgr from emp where ename='FORD');
使用多表查询
select leader.emprno,leader.ename from emp leader,emp worker where leader.emprno = worker.mgr and work.ename = 'FORD';
使用到表的别名
form emp leader,emp worker,给自己的表起别名,因为要先做笛卡尔积,所以别名可以先识别。
子查询
子查询是指从嵌入在其他 sql 语句中的 select 语句,也叫嵌套查询
单行子查询
返回一行记录的子查询
显示 smith 同一部门的员工
select * from emp where deptno = (select deptno from emp where ename='smith');
多行子查询
返回多行记录的子查询
in 关键字:查询和 10 部门的工作岗位相同的雇员的名字,岗位,工资,部门号,但是不包含10自己的
select ename,job,sal,deptno from emp where job in (select distinct job from emp where deptno = 10) and deptno<>10;
all 关键字:显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号
select ename,sal,deptno from emp where sal > all(select sal from emp where deptno=30);
any 关键字:显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号(包含自己部门的员工)
select ename,sal,deptno from emp where sal > any(select sal from emp where deptno = 30);
多列子查询
单行子查询是指子查询只返回单列,单行数据;多行子查询是指返回单列多行数据,都是针对单列而言的,而多列子查询则是指查询返回多个列数数据的子查询语句。
案例:查询和 smith 的部门的岗位完全相同的所有雇员,不含 smith 本人
select ename from emp where (deptno,job)=(select deptno,job from emp where ename='SMITH') and ename <> 'SMITH';
在 from 子句中使用子查询
子查询语句出现在 from 子中。这里要用到数据查询的技巧,把一个子查询当作一个临时表使用。
案例:
显示每个高于自己部门平均工资的员工的姓名、部门、工资、平均工资
select ename,deptno,sal,format(asal,2) from emp, (select avg(sal) asal, deptno dt from emp group by deptno) tmp where emp.sal>tmp.asal and emp.deptno=tmp.dt;
获取各个部门的平均工资,将其看作临时表。
查找每个部门工资最高的人的姓名、工资、部门、最高工资。
select emp.ename,emp.sal,emp.deptno,ms form emp,
(select max(sal) ms, deptno from emp group by deptno) tmp
where emp.deptno = tmp.deptno and emp.sal=tmp.ms;
显示每个部门的信息(部门名,编号,地址)和人员数量
方法一:使用多表
select dept.ename,dept.deptno,dept.loc,count(*) '部门人数' from emp,
dept
where emp.deptno=dept.deptno
group by dept.deptno,dept.ename,dept.loc;
方法二:使用子查询
1. 对emp表进行人员统计
select count(*),deptno from emp group by deptno;
2. 将上面的表看作临时表
select dept.deptno,dname,mycnt,loc from dept,
(select count(*) mycnt,deptno from emp group by deptno) tmp
where dept.deptno = tmp.deptno;
合并查询
在实际应用中,为了合并多个 select 的执行结果,可以使用集合操作符 union,union all
union
该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行
案例:将工资大于2500或职位是MANAGER的人找出来
select ename,sal,job from emp where sal>2500 union
select ename,sal,job from emp where job='MANAGER';
union all
该操作符用于取得两个结果集的并集。当使用该操作符时,不会去掉集中的重复行。
案例:将工资大于25000或职位是MANAGER的人找出来
select ename,sal,job from emp where sal>2500 union all
select ename,sal,job from emp where job='MANAGER';相关文章:
MySQL 复合查询(重点)
个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 MySQL 复合查询(重点) 收录于专栏[MySQL] 本专栏旨在分享学习MySQL的一点学习笔记,欢迎大家在评论区交流讨论💌 …...
ASP.NET |日常开发中连接Oracle数据库详解
ASP.NET |日常开发中连接Oracle数据库详解 前言一、安装和配置 Oracle 数据访问组件1.1 安装ODP.NET(Oracle Data Provider for.NET):1.2 引用相关程序集: 二、配置连接字符串2.1 连接字符串的基本组成部分:…...
java_连接数据库的方法_后端处理_前端调用_打通整体思路
参考:14 尚上优选项目-平台管理端-权限管理模块-开发角色管理接口(上)_哔哩哔哩_bilibili 第一步. 定义数据 在数据库中定义好数据(如role表格),在java后端定义好对应的实体类(Role类…...
网络安全知识点
第一章 网络安全概述 1.2.1 网络安全概念P4 网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。 1.2.3 网络安全的种类P5 (1…...
pyfink1.20版本下实现消费kafka中数据并实时计算
1、环境 JDK版本:1.8.0_412python版本:3.10.6apache-flink版本:1.20.0flink版本:1.20kafka版本:kafka_2.12-3.1.1flink-sql-connector-kafka版本:3.3.0-1.202、执行python-flink脚本 从kafka的demo获取消…...
国产Tomcat东方通(TongWeb):Linux系统部署全攻略
国产Tomcat东方通(TongWeb):Linux系统部署全攻略 国产tomcat东方通tongweb在linux系统上部署全流程 [这里是图片001] 项目地址: https://gitcode.com/Resource-Bundle-Collection/fca68 项目介绍 在当前的软件开发和运维环境中,…...
bilstm -crf 的torch官方的教程 不支持 batchsize 。。。。有更效率更高的方案吗
根据您的需求,您正在寻找一个支持批量处理(batch size)的BiLSTM-CRF模型的PyTorch教程。以下是一些资源,它们提供了更高效的解决方案,包括批量处理的支持: 1. **a-PyTorch-Tutorial-to-Sequence-Labeling*…...
Python面试常见问题及答案6
一、基础部分 问题1: 在Python中,如何将字符串转换为整数?如果字符串不是合法的数字字符串会怎样? 答案: 在Python中,可以使用int()函数将字符串转换为整数。如果字符串是合法的数字字符串,转换…...
代码随想录算法训练营第三天 | 链表理论基础 | 203.移除链表元素
感觉上是可以轻松完成的,因为对链接的结构,元素的删除过程心里明镜似的 实际上四处跑气 结构体的初始化好像完全忘掉了,用malloc折腾半天,忘记了用new,真想扇自己嘴巴子到飞起删除后写一个函数,把链表打印…...
1. 机器学习基本知识(5)——练习题(1)
1.7 🐦🔥练习题(本章重点回顾与总结) 0.回答格式约定: 对于书本内容的回答,将优先寻找书本内容作为答案进行回答。 书本内容回答完毕后,将对问题进行补充回答,上面分割线作为两个…...
vue 自定义组件image 和 input
本章主要是介绍自定义的组件:WInput:这是一个验证码输入框,自动校验,输入完成回调等;WImage:这是一个图片展示组件,集成了缩放,移动等操作。 目录 一、安装 二、引入组件 三、使用…...
系列3:基于Centos-8.6 Kubernetes使用nfs挂载pod的应用日志文件
每日禅语 古代,一位官员被革职遣返,心中苦闷无处排解,便来到一位禅师的法堂。禅师静静地听完了此人的倾诉,将他带入自己的禅房之中。禅师指着桌上的一瓶水,微笑着对官员说:“你看这瓶水,它已经…...
Jfinal项目整合Redis
1、引入相关依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version> </dependency><depen…...
在Ubuntu服务器上备份文件到自己的百度网盘
文章目录 概述安装bypy同步文件定时任务脚本 概述 之前自购了一台阿里云服务器,系统镜像为Ubuntu 22.04, 并且搭建了LNMP开发环境(可以参考:《Ubuntu搭建PHP开发环境操作步骤(保姆级教程)》)。由于项目运行中会产生附…...
Unity 模板测试透视效果(URP)
可以实现笼中窥梦和PicoVR中通过VST局部透视效果。 使用到的Shader: Shader "Unlit/StencilShader" {Properties{[IntRange]_Index("Stencil Index",Range(0,255))0}SubShader{Tags{"RenderType""Opaque""Queue""Geo…...
《计算机视觉证书:开启职业发展新航道》
一、引言 在当今科技飞速发展的时代,计算机视觉技术正以惊人的速度改变着我们的生活和工作方式。从智能手机的人脸识别解锁到自动驾驶汽车的环境感知,计算机视觉技术的应用无处不在。而计算机视觉证书作为这一领域的专业认证,其作用愈发凸显…...
.NET6 WebApi第1讲:VSCode开发.NET项目、区别.NET5框架【两个框架启动流程详解】
一、使用VSCode开发.NET项目 1、创建文件夹,使用VSCode打开 2、安装扩展工具 1>C# 2>安装NuGet包管理工具,外部dll包依靠它来加载 法1》:NuGet Gallery,注意要启动科学的工具 法2》NuGet Package Manager GUl,…...
Git-分布式版本控制工具
目录 1. 概述 1. 1集中式版本控制工具 1.2分布式版本控制工具 2.Git 2.1 git 工作流程 1. 概述 在开发活动中,我们经常会遇到以下几个场景:备份、代码回滚、协同开发、追溯问题代码编写人和编写时间(追责)等。备份的话是为了…...
C++ 第10章 对文件的输入输出
https://www.bilibili.com/video/BV1cx4y1d7Ut/?p147&spm_id_from333.1007.top_right_bar_window_history.content.click&vd_sourcee8984989cddeb3ef7b7e9fd89098dbe8 🍁🍁🍁本篇为贺宏宏老师C语言视频教程文件输入输出部分笔记整理…...
【机器学习】手写数字识别的最优解:CNN+Softmax、Sigmoid与SVM的对比实战
一、基于CNNSoftmax函数进行分类 1数据集准备 2模型设计 3模型训练 4模型评估 5结果分析 二、 基于CNNsigmoid函数进行分类 1数据集准备 2模型设计 3模型训练 4模型评估 5结果分析 三、 基于CNNSVM进行分类 1数据集准备 2模型设计 3模型训练 4模型评估 5结果分…...
VisualCppRedist AIO:一站式解决Windows软件运行依赖问题的终极指南
VisualCppRedist AIO:一站式解决Windows软件运行依赖问题的终极指南 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况&…...
老虎证券季报图解:营收1.76亿美元同比增41% 净利4566万美元
雷递网 雷建平 4月2日老虎证券(NASDAQ: TIGR)日前发布截至2025年12月31日的财报。财报显示,老虎证券2025年营收为6.12亿美元,较上年同期的3.92亿美元增长56.1%。其中,老虎证券2025年来自佣金收入为2.67亿美元ÿ…...
开源键盘定制工具:无需编程打造专属机械键盘体验
开源键盘定制工具:无需编程打造专属机械键盘体验 【免费下载链接】keyboards 项目地址: https://gitcode.com/gh_mirrors/key/keyboards 在机械键盘的世界里,每一位用户都渴望拥有一把真正符合自己使用习惯的输入设备。开源键盘定制工具正是这样…...
Claude颠覆AI编程
🚀 Claude 4 正式发布!Anthropic 这次真的要颠覆 AI 编程了 今天,AI 领域迎来核弹级更新——Anthropic 正式发布 Claude 4 系列模型!免费可用、7 小时自主编程,开发者直呼"生产力革命来了"! 一、…...
Pandas 操作指南(一):DataFrame 的构建与表格数据组织
在数据分析与数据处理中,原始数据往往并不是一开始就以规范表格的形式出现。它可能来自列表(list)、字典(dict)、CSV/Excel 文件,或程序运行过程中临时生成的数据集合。若这些数据尚未被整理为结构明确的表…...
ipa 覆盖算法参数调优实战:从理论到可视化验证
1. IPA覆盖算法核心参数解析 在机器人路径规划领域,IPA覆盖算法因其高效性和适应性被广泛应用。这个算法的核心在于几个关键参数的协同作用,它们直接影响着机器人的覆盖路径质量和执行效率。让我们先来认识这些"幕后操控者": cover…...
别再自己造轮子了!用DJI Pilot 2 + 上云API,30分钟搞定无人机数据上云
30分钟极速对接:用DJI Pilot 2与上云API实现无人机数据云端整合 在智慧城市巡检或应急指挥场景中,实时获取无人机航拍画面与飞行数据往往是业务闭环的关键。传统方案需要投入数月时间开发定制化App,而大疆最新推出的上云API方案,让…...
AI开发效率翻倍:TensorFlow-v2.9镜像完整开发环境实测体验
AI开发效率翻倍:TensorFlow-v2.9镜像完整开发环境实测体验 你是不是也经历过这样的场景?新项目启动,满怀激情准备大干一场,结果第一天就卡在了环境配置上。CUDA版本不对、依赖库冲突、Python环境混乱……光是让TensorFlow成功识别…...
Qwen3视觉黑板报辅助数据库课程设计:ER图与数据关系可视化
Qwen3视觉黑板报辅助数据库课程设计:ER图与数据关系可视化 你是不是也经历过这样的场景?面对《数据库课程设计》这门课,老师布置了一个“图书管理系统”或者“学生选课系统”的题目,你脑子里有一堆想法,但就是不知道该…...
Pixel Couplet Gen快速上手:Rust+WASM加速正则解析器性能实测报告
Pixel Couplet Gen快速上手:RustWASM加速正则解析器性能实测报告 1. 项目概览 Pixel Couplet Gen是一款融合传统春节文化与现代像素艺术风格的AI春联生成器。通过ModelScope大模型驱动,这款工具将中国传统的春联创作带入了数字时代,特别采用…...
