当前位置: 首页 > news >正文

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 复合查询(重点)

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 MySQL 复合查询&#xff08;重点&#xff09; 收录于专栏[MySQL] 本专栏旨在分享学习MySQL的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; …...

ASP.NET |日常开发中连接Oracle数据库详解

ASP.NET &#xff5c;日常开发中连接Oracle数据库详解 前言一、安装和配置 Oracle 数据访问组件1.1 安装ODP.NET&#xff08;Oracle Data Provider for.NET&#xff09;&#xff1a;1.2 引用相关程序集&#xff1a; 二、配置连接字符串2.1 连接字符串的基本组成部分&#xff1a…...

java_连接数据库的方法_后端处理_前端调用_打通整体思路

参考&#xff1a;14 尚上优选项目-平台管理端-权限管理模块-开发角色管理接口&#xff08;上&#xff09;_哔哩哔哩_bilibili 第一步. 定义数据 在数据库中定义好数据&#xff08;如role表格&#xff09;&#xff0c;在java后端定义好对应的实体类&#xff08;Role类&#xf…...

网络安全知识点

第一章 网络安全概述 1.2.1 网络安全概念P4 网络安全是指网络系统的硬件、软件及其系统中的数据受到保护&#xff0c;不因偶然的或恶意的原因而遭到破坏、更改、泄露&#xff0c;系统连续可靠正常地运行&#xff0c;网络服务不中断。 1.2.3 网络安全的种类P5 &#xff08;1…...

pyfink1.20版本下实现消费kafka中数据并实时计算

1、环境 JDK版本&#xff1a;1.8.0_412python版本&#xff1a;3.10.6apache-flink版本&#xff1a;1.20.0flink版本&#xff1a;1.20kafka版本&#xff1a;kafka_2.12-3.1.1flink-sql-connector-kafka版本&#xff1a;3.3.0-1.202、执行python-flink脚本 从kafka的demo获取消…...

国产Tomcat东方通(TongWeb):Linux系统部署全攻略

国产Tomcat东方通&#xff08;TongWeb&#xff09;&#xff1a;Linux系统部署全攻略 国产tomcat东方通tongweb在linux系统上部署全流程 [这里是图片001] 项目地址: https://gitcode.com/Resource-Bundle-Collection/fca68 项目介绍 在当前的软件开发和运维环境中&#xff0c…...

bilstm -crf 的torch官方的教程 不支持 batchsize 。。。。有更效率更高的方案吗

根据您的需求&#xff0c;您正在寻找一个支持批量处理&#xff08;batch size&#xff09;的BiLSTM-CRF模型的PyTorch教程。以下是一些资源&#xff0c;它们提供了更高效的解决方案&#xff0c;包括批量处理的支持&#xff1a; 1. **a-PyTorch-Tutorial-to-Sequence-Labeling*…...

Python面试常见问题及答案6

一、基础部分 问题1&#xff1a; 在Python中&#xff0c;如何将字符串转换为整数&#xff1f;如果字符串不是合法的数字字符串会怎样&#xff1f; 答案&#xff1a; 在Python中&#xff0c;可以使用int()函数将字符串转换为整数。如果字符串是合法的数字字符串&#xff0c;转换…...

代码随想录算法训练营第三天 | 链表理论基础 | 203.移除链表元素

感觉上是可以轻松完成的&#xff0c;因为对链接的结构&#xff0c;元素的删除过程心里明镜似的 实际上四处跑气 结构体的初始化好像完全忘掉了&#xff0c;用malloc折腾半天&#xff0c;忘记了用new&#xff0c;真想扇自己嘴巴子到飞起删除后写一个函数&#xff0c;把链表打印…...

1. 机器学习基本知识(5)——练习题(1)

1.7 &#x1f426;‍&#x1f525;练习题&#xff08;本章重点回顾与总结&#xff09; 0.回答格式约定&#xff1a; 对于书本内容的回答&#xff0c;将优先寻找书本内容作为答案进行回答。 书本内容回答完毕后&#xff0c;将对问题进行补充回答&#xff0c;上面分割线作为两个…...

vue 自定义组件image 和 input

本章主要是介绍自定义的组件&#xff1a;WInput&#xff1a;这是一个验证码输入框&#xff0c;自动校验&#xff0c;输入完成回调等&#xff1b;WImage&#xff1a;这是一个图片展示组件&#xff0c;集成了缩放&#xff0c;移动等操作。 目录 一、安装 二、引入组件 三、使用…...

系列3:基于Centos-8.6 Kubernetes使用nfs挂载pod的应用日志文件

每日禅语 古代&#xff0c;一位官员被革职遣返&#xff0c;心中苦闷无处排解&#xff0c;便来到一位禅师的法堂。禅师静静地听完了此人的倾诉&#xff0c;将他带入自己的禅房之中。禅师指着桌上的一瓶水&#xff0c;微笑着对官员说&#xff1a;​“你看这瓶水&#xff0c;它已经…...

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同步文件定时任务脚本 概述 之前自购了一台阿里云服务器&#xff0c;系统镜像为Ubuntu 22.04&#xff0c; 并且搭建了LNMP开发环境&#xff08;可以参考&#xff1a;《Ubuntu搭建PHP开发环境操作步骤(保姆级教程)》&#xff09;。由于项目运行中会产生附…...

Unity 模板测试透视效果(URP)

可以实现笼中窥梦和PicoVR中通过VST局部透视效果。 使用到的Shader: Shader "Unlit/StencilShader" {Properties{[IntRange]_Index("Stencil Index",Range(0,255))0}SubShader{Tags{"RenderType""Opaque""Queue""Geo…...

《计算机视觉证书:开启职业发展新航道》

一、引言 在当今科技飞速发展的时代&#xff0c;计算机视觉技术正以惊人的速度改变着我们的生活和工作方式。从智能手机的人脸识别解锁到自动驾驶汽车的环境感知&#xff0c;计算机视觉技术的应用无处不在。而计算机视觉证书作为这一领域的专业认证&#xff0c;其作用愈发凸显…...

.NET6 WebApi第1讲:VSCode开发.NET项目、区别.NET5框架【两个框架启动流程详解】

一、使用VSCode开发.NET项目 1、创建文件夹&#xff0c;使用VSCode打开 2、安装扩展工具 1>C# 2>安装NuGet包管理工具&#xff0c;外部dll包依靠它来加载 法1》&#xff1a;NuGet Gallery&#xff0c;注意要启动科学的工具 法2》NuGet Package Manager GUl&#xff0c…...

Git-分布式版本控制工具

目录 1. 概述 1. 1集中式版本控制工具 1.2分布式版本控制工具 2.Git 2.1 git 工作流程 1. 概述 在开发活动中&#xff0c;我们经常会遇到以下几个场景&#xff1a;备份、代码回滚、协同开发、追溯问题代码编写人和编写时间&#xff08;追责&#xff09;等。备份的话是为了…...

C++ 第10章 对文件的输入输出

https://www.bilibili.com/video/BV1cx4y1d7Ut/?p147&spm_id_from333.1007.top_right_bar_window_history.content.click&vd_sourcee8984989cddeb3ef7b7e9fd89098dbe8 &#x1f341;&#x1f341;&#x1f341;本篇为贺宏宏老师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&#xff1a;一站式解决Windows软件运行依赖问题的终极指南 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况&…...

老虎证券季报图解:营收1.76亿美元同比增41% 净利4566万美元

雷递网 雷建平 4月2日老虎证券&#xff08;NASDAQ: TIGR&#xff09;日前发布截至2025年12月31日的财报。财报显示&#xff0c;老虎证券2025年营收为6.12亿美元&#xff0c;较上年同期的3.92亿美元增长56.1%。其中&#xff0c;老虎证券2025年来自佣金收入为2.67亿美元&#xff…...

开源键盘定制工具:无需编程打造专属机械键盘体验

开源键盘定制工具&#xff1a;无需编程打造专属机械键盘体验 【免费下载链接】keyboards 项目地址: https://gitcode.com/gh_mirrors/key/keyboards 在机械键盘的世界里&#xff0c;每一位用户都渴望拥有一把真正符合自己使用习惯的输入设备。开源键盘定制工具正是这样…...

Claude颠覆AI编程

&#x1f680; Claude 4 正式发布&#xff01;Anthropic 这次真的要颠覆 AI 编程了 今天&#xff0c;AI 领域迎来核弹级更新——Anthropic 正式发布 Claude 4 系列模型&#xff01;免费可用、7 小时自主编程&#xff0c;开发者直呼"生产力革命来了"&#xff01; 一、…...

Pandas 操作指南(一):DataFrame 的构建与表格数据组织

在数据分析与数据处理中&#xff0c;原始数据往往并不是一开始就以规范表格的形式出现。它可能来自列表&#xff08;list&#xff09;、字典&#xff08;dict&#xff09;、CSV/Excel 文件&#xff0c;或程序运行过程中临时生成的数据集合。若这些数据尚未被整理为结构明确的表…...

ipa 覆盖算法参数调优实战:从理论到可视化验证

1. IPA覆盖算法核心参数解析 在机器人路径规划领域&#xff0c;IPA覆盖算法因其高效性和适应性被广泛应用。这个算法的核心在于几个关键参数的协同作用&#xff0c;它们直接影响着机器人的覆盖路径质量和执行效率。让我们先来认识这些"幕后操控者"&#xff1a; cover…...

别再自己造轮子了!用DJI Pilot 2 + 上云API,30分钟搞定无人机数据上云

30分钟极速对接&#xff1a;用DJI Pilot 2与上云API实现无人机数据云端整合 在智慧城市巡检或应急指挥场景中&#xff0c;实时获取无人机航拍画面与飞行数据往往是业务闭环的关键。传统方案需要投入数月时间开发定制化App&#xff0c;而大疆最新推出的上云API方案&#xff0c;让…...

AI开发效率翻倍:TensorFlow-v2.9镜像完整开发环境实测体验

AI开发效率翻倍&#xff1a;TensorFlow-v2.9镜像完整开发环境实测体验 你是不是也经历过这样的场景&#xff1f;新项目启动&#xff0c;满怀激情准备大干一场&#xff0c;结果第一天就卡在了环境配置上。CUDA版本不对、依赖库冲突、Python环境混乱……光是让TensorFlow成功识别…...

Qwen3视觉黑板报辅助数据库课程设计:ER图与数据关系可视化

Qwen3视觉黑板报辅助数据库课程设计&#xff1a;ER图与数据关系可视化 你是不是也经历过这样的场景&#xff1f;面对《数据库课程设计》这门课&#xff0c;老师布置了一个“图书管理系统”或者“学生选课系统”的题目&#xff0c;你脑子里有一堆想法&#xff0c;但就是不知道该…...

Pixel Couplet Gen快速上手:Rust+WASM加速正则解析器性能实测报告

Pixel Couplet Gen快速上手&#xff1a;RustWASM加速正则解析器性能实测报告 1. 项目概览 Pixel Couplet Gen是一款融合传统春节文化与现代像素艺术风格的AI春联生成器。通过ModelScope大模型驱动&#xff0c;这款工具将中国传统的春联创作带入了数字时代&#xff0c;特别采用…...