Mysql 复合查询

发布时间:2026/9/22 10:28:44

Mysql 复合查询 多表查询实际开发中往往数据来自不同的表所以需要多表查询。本节我们用一个简单的公司管理系统有三张 表EMP,DEPT,SALGRADE来演示如何进行多表查询。部门表 dept员工表 emp工资等级表 salgrade案例显示雇员名、雇员工资以及所在部门的名字因为上面的数据来自EMP和DEPT表因此要联合查询select emp.ename,emp.sal,dept.dname from emp,dept where emp.deptnodept.deptno;其实我们只要emp表中的deptno dept表中的deptno字段的记录,所以后面要有个where限定结果显示部门号为10的部门名员工名和工资select ename, sal,dname from EMP, DEPT where EMP.deptnoDEPT.deptno and DEPT.deptno 10;显示各个员工的姓名工资及工资级别select ename,sal,grade from emp,salgrade where emp.sal between losal and hisal;自连接自连接是指在同一张表连接查询案例使用的子查询使用多表查询自查询-- 使用到表的别名--from emp leader, emp worker给自己的表起别名因为要先做笛卡尔积所以别名可以先识 别子查询子查询是指嵌入在其他sql语句中的select语句也叫嵌套查询单行子查询返回一行记录的子查询显示SMITH同一部门的员工select * from EMP WHERE deptno (select deptno from EMP where enamesmith);多行子查询返回多行记录的子查询in关键字查询和10号部门的工作岗位相同的雇员的名字岗位工资部门号但是不包含10自 己的select ename,job,sal,deptno from emp where job in (select distinct job from emp where deptno10) and deptno10;all关键字显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号select ename, sal, deptno from EMP where sal all(select sal from EMP where deptno30);any关键字显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号包含自己部门 的员工select ename, sal, deptno from EMP where sal any(select sal from EMP where deptno30);多列子查询单行子查询是指子查询只返回单列单行数据多行子查询是指返回单列多行数据都是针对单列而言的而多列子查询则是指查询返回多个列数据的子查询语句案例查询和SMITH的部门和岗位完全相同的所有雇员不含SMITH本人mysql select ename from EMP where (deptno, job)(select deptno, job from EMP where enameSMITH) 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.deptnotmp.dt;查找每个部门工资最高的人的姓名、工资、部门、最高工资select emp.ename, emp.sal, emp.deptno, ms from emp, (select max(sal) ms, deptno from emp group by deptno) tmp where emp.deptnotmp.deptno and emp.saltmp.ms;显示每个部门的信息部门名编号地址和人员数量方法1使用多表select dept.dname, dept.deptno, dept.loc,count(*) 部门人数 from emp,dept where emp.deptnodept.deptno group by dept.deptno,dept.dname,dept.loc;方法2使用子查询-- 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.deptnotmp.deptno;合并查询在实际应用中为了合并多个select的执行结果可以使用集合操作符 unionunion allunion该操作符用于取得两个结果集的并集。当使用该操作符时会自动去掉结果集中的重复行。案例将工资大于2500或职位是MANAGER的人找出来select ename, sal, job from emp where sal2500 union select ename, sal, job from emp where jobMANAGER;--去掉了重复记录union all该操作符用于取得两个结果集的并集。当使用该操作符时不会去掉结果集中的重复行。案例将工资大于25000或职位是MANAGER的人找出来select ename, sal, job from emp where sal2500 union all select ename, sal, job from emp where jobMANAGER;连接查询重点表的连接分为内连和外连内连接内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选我们前面学习的查询都是内连 接也是在开发过程中使用的最多的连接查询。select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件备注前面学习的都是内连接案例显示SMITH的名字和部门名称-- 用前面的写法 select ename, dname from emp, dept where emp.deptnodept.deptno and enameSMITH; -- 用标准的内连接写法 select ename, dname from emp inner join dept on emp.deptnodept.deptno and enameSMITH;外连接外连接分为左外连接和右外连接左外连接如果联合查询左侧的表完全显示我们就说是左外连接。select 字段名 from 表名1 left join 表名2 on 连接条件案例-- 建两张表 create table stu (id int, name varchar(30)); -- 学生表 insert into stu values(1,jack),(2,tom),(3,kity),(4,nono); create table exam (id int, grade int); -- 成绩表 insert into exam values(1, 56),(2,76),(11, 8);查询所有学生的成绩如果这个学生没有成绩也要将学生的个人信息显示出来-- 当左边表和右边表没有匹配时也会显示左边表的数据 select * from stu left join exam on stu.idexam.id;右外连接如果联合查询右侧的表完全显示我们就说是右外连接。select 字段 from 表名1 right join 表名2 on 连接条件案例对stu表和exam表联合查询把所有的成绩都显示出来即使这个成绩没有学生与它对应也要 显示出来select * from stu right join exam on stu.idexam.id;列出部门名称和这些部门的员工信息同时列出没有员工的部门方法一select d.dname, e.* from dept d left join emp e on d.deptnoe.deptno;方法二select d.dname, e.* from emp e right join dept d on d.deptnoe.deptno;
延伸阅读

更多相关文章

2026/9/20 0:34:40

STM32串口中断通信:从阻塞轮询到高效并发的HAL库实战指南

1. 从阻塞到响应:为什么串口通信必须用中断? 搞STM32开发的,串口通信是绕不开的基础。很多新手教程都是从HAL库的 HAL_UART_Transmit 和 HAL_UART_Receive 这两个轮询(Polling)函数开始的,代码简单直接…

2026/9/20 0:34:46

智能体入门:概念、架构与应用亮点

智能体(AI Agent)可以理解为一种具备自主思考与行动能力的人工智能系统。如果说传统AI像个只会执行单一指令的"工具",智能体就更像一位能理解目标、自己想办法完成复杂任务的"数字伙伴"或"虚拟员工"。&#x1…

2026/9/20 0:34:46

VMware虚拟机IPv6配置全攻略:从桥接到NAT模式实战指南

1. 项目背景与核心价值:为什么要在VMware中开启IPv6?如果你还在用VMware搭建测试环境、部署服务,却只停留在IPv4的世界里,那可能已经落后于时代了。我最近在为一个分布式微服务项目搭建开发环境时,就遇到了一个典型问题…

2026/9/22 10:25:27

别被藕断丝连下载坑了 一文搞懂原理避坑

别被藕断丝连下载坑了 一文搞懂原理避坑 看了一堆教程还是不会写项目?那种对着屏幕发呆、代码报错红一片的绝望感,老鸟们肯定都懂。很多新人卡在“藕断丝连下载”这个概念上,觉得它只是个普通的文件获取动作,结果项目一上量,内存溢出、连接超时、状态混…

2026/9/22 10:25:27

es文件浏览器怎么用,新手避坑指南与高频面试题

es文件浏览器怎么用,新手避坑指南与高频面试题 配置环境就卡半天?别慌,这不仅是你的问题,也是很多开发者在接触 Elasticsearch 文件浏览功能时的第一道坎。很多人以为装个 Kibana…

2026/9/22 10:25:27

王者荣耀返场投票入口2020新手避坑指南源码拆解

王者荣耀返场投票入口2020新手避坑指南源码拆解 官方文档堆砌术语,新手直接劝退? 别慌,今天用源码视角拆穿 王者荣耀返场投票入口2020 背后的逻辑。 新手避坑 的核心,就是看懂这层黑盒。 入口定位:从URL到路由映射…

2026/9/22 10:20:26

啪啪啪动图开发避坑:3个致命错误与速查手册

啪啪啪动图开发避坑:3个致命错误与速查手册 刚接手旧项目,发现前端动效全挂了?别慌,这不是玄学。 版本升级后 API 全变了,旧代码直接报错,新文档又写得云里雾里。这时候你需要的不是重新学原理,而是一份能直接救命的 速查手册 。…

2026/9/22 10:02:42

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/22 9:07:39

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/22 0:04:49

输电线路在线监测高频面试题拆解 3秒抓住官方文档重点

输电线路在线监测高频面试题拆解 3秒抓住官方文档重点 官方文档几百页翻到头还是懵?面试问到 输电线路在线监测 的数据链路时,脑子一片空白?别慌,这种 高频面试题 我整理了10年,专门治各种“文档太长抓不住重点”的毛病。…

2026/9/22 0:04:49

中介房源管理系统重构避坑:3个关键步骤搞定API变更

中介房源管理系统重构避坑:3个关键步骤搞定API变更 版本升级后 API 全变了,这种痛只有真做过的人懂。 很多团队在接手老旧房产项目时,最崩溃的不是代码烂,而是底层框架升级后,原本熟悉的接口调用方式彻底失效。 这份 保姆级教程…

2026/9/22 0:04:49

3个坑点带你一文搞懂55gg小游戏源码

3个坑点带你一文搞懂55gg小游戏源码 盯着控制台满屏的红色报错,看着那一长串 StackTrace ,是不是脑子瞬间宕机?别急,这种时候最忌讳的就是盲目改代码。很多刚入行的前端同学,面对 55gg 小游戏这类轻量级 H5…

2026/9/20 4:54:47

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/21 18:32:12

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/21 10:29:02

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码