news 2026/4/16 13:51:53

MySQL复合查询

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL复合查询

一、基本查询

1.1查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J

select * from EMP where (sal>500 or job='MANAGER') and ename like 'J%';

1.2按照部门号升序而雇员的工资降序排序

select * from EMP order by deptno, sal desc;

1.3使用年薪进行降序排序

select ename,sal, comm, sal*12+ifnull(comm,0) as '年薪' from EMP order by 年薪 desc;

1.4显示工资最高的员工的名字和工作岗位

select ename, job from EMP where sal = (select max(sal) from EMP);

1.5显示工资高于平均工资的员工信息

select * from EMP where sal>(select avg(sal) from EMP);

1.6显示每个部门的平均工资和最高工资

select deptno, format(avg(sal), 2) , max(sal) from EMP group by deptno;

1.7显示平均工资小于等于2000的部门号和它的平均工资

select deptno, avg(sal) as avg_sal from EMP group by deptno having avg_sal<=2000;

1.8显示每种岗位的雇员总数,平均工资

select job,count(*) 人数, format(avg(sal),2) 平均工资 from EMP group by job;

二、多表查询

实际开发中往往数据来自不同的表,所以需要多表查询。

2.1显示雇员名、雇员工资以及所在部门的名字

注意:因为上面的数据分别来自EMP和DEPT两张不同得表,因此要联合查询

select EMP.ename, EMP.sal, DEPT.dname from EMP, DEPT where EMP.deptno = DEPT.deptno;

2.2显示部门号为10的部门名,员工名和工资

select ename, sal,dname from EMP, DEPT where EMP.deptno=DEPT.deptno and DEPT.deptno = 10;

2.3显示各个员工的姓名,工资,及工资级别

select ename, sal, grade from EMP, SALGRADE where EMP.sal between losal and hisal;

三、自连接

自连接是指在同一张表连接查询

案例:显示员工FORD的上级领导的编号和姓名(mgr是员工领导的编号--empno)

方法一:使用子查询:

第一步:先找ford领导得编号

第二步:在通过领导编号找到领导第三步:合并语句

第三步:合并语句

方法二:使用自连接查询

注意:from emp leader, emp worker,给自己的表起别名,因为要先做笛卡尔积,所以别名可以先识别

select leader.empno,leader.ename from emp leader, emp worker where leader.empno = worker.mgr and worker.ename='FORD';

四、子查询

4.1单行子查询

返回一行记录的子查询

案例:显示SMITH同一部门的员工

select * from EMP WHERE deptno = (select deptno from EMP where ename='smith');

4.2多行子查询

返回多行记录的子查询

4.2.1in关键字;查询和10号部门的工作岗位相同的雇员的名字,岗位,工资,部门号,但是不包含10自己的

select ename,job,sal,deptno from emp where job in (select distinct job from emp where deptno=10) and deptno<>10;

4.2.2all关键字;显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号

select ename, sal, deptno from EMP where sal > all(select distinct sal from EMP where deptno=30);

4.2.3any关键字;显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号(包含自己部门的员工)

select ename, sal, deptno from EMP where sal > any(select sal from EMP where deptno=30);

4.3多列子查询

单行子查询是指子查询只返回单列,单行数据;多行子查询是指返回单列多行数据,都是针对单列而言 的,而多列子查询则是指查询返回多个列数据的子查询语句。

案例:查询和SMITH的部门和岗位完全相同的所有雇员,不含SMITH本人

五、在from子句中使用子查询

子查询语句出现在from子句中。这里要用到数据查询的技巧,把一个子查询当做一个临时表使用。

5.1显示每个高于自己部门平均工资的员工的姓名、部门、工资、平均工资

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;

5.2查找每个部门工资最高的人的姓名、工资、部门、最高工资

select EMP.ename, EMP.sal, EMP.deptno, ms from EMP, (select max(sal) ms, deptno from EMP group by deptno) tmp where EMP.deptno=tmp.deptno and EMP.sal=tmp.ms;

5.3显示每个部门的信息(部门名,编号,地址)和人员数量

方法1:使用多表

select DEPT.dname, DEPT.deptno, DEPT.loc,count(*) '部门人数' from EMP, DEPT where EMP.deptno=DEPT.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.deptno=tmp.deptno;

六、合并查询

在实际应用中,为了合并多个select的执行结果,可以使用集合操作符 union,union all

6.1union

该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行。

案例:将工资大于2500或职位是MANAGER的人找出来

6.2union all

该操作符用于取得两个结果集的并集。当使用该操作符时,不会去掉结果集中的重复行。

案例:将工资大于25000或职位是MANAGER的人找出来

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 5:15:12

Qwen3-0.6B企业应用案例:客服机器人快速集成完整指南

Qwen3-0.6B企业应用案例&#xff1a;客服机器人快速集成完整指南 1. 引言 随着大语言模型技术的不断演进&#xff0c;轻量级模型在企业级应用中的价值日益凸显。Qwen3&#xff08;千问3&#xff09;是阿里巴巴集团于2025年4月29日开源的新一代通义千问大语言模型系列&#xf…

作者头像 李华
网站建设 2026/4/12 5:37:20

告别云端延迟!CosyVoice Lite本地语音合成实战

告别云端延迟&#xff01;CosyVoice Lite本地语音合成实战 1. 引言&#xff1a;从云端到边缘的语音合成演进 1.1 传统TTS服务的三大瓶颈 在智能语音交互日益普及的今天&#xff0c;文本转语音&#xff08;Text-to-Speech, TTS&#xff09;技术已成为人机沟通的核心桥梁。然而…

作者头像 李华
网站建设 2026/4/11 22:35:51

HY-MT1.5-7B领域词典:专业术语强制使用方案

HY-MT1.5-7B领域词典&#xff1a;专业术语强制使用方案 1. 模型与服务背景介绍 随着多语言交流需求的不断增长&#xff0c;高质量、可定制化的机器翻译模型成为跨语言应用的核心支撑。混元翻译模型&#xff08;HY-MT&#xff09;系列作为专注于多语言互译任务的先进模型&…

作者头像 李华
网站建设 2026/4/3 5:14:56

Z-Image-Turbo开发者对接:科哥微信技术支持接入流程

Z-Image-Turbo开发者对接&#xff1a;科哥微信技术支持接入流程 1. 背景与技术定位 1.1 阿里通义Z-Image-Turbo WebUI图像快速生成模型二次开发背景 随着AI生成内容&#xff08;AIGC&#xff09;在设计、广告、游戏等领域的广泛应用&#xff0c;高效、可控的图像生成工具成为…

作者头像 李华
网站建设 2026/3/27 2:05:08

5个常见错误规避:Qwen2.5镜像部署避坑指南

5个常见错误规避&#xff1a;Qwen2.5镜像部署避坑指南 1. 引言 随着大语言模型在实际业务场景中的广泛应用&#xff0c;快速、稳定地部署高性能模型成为开发者关注的核心问题。阿里云推出的 Qwen2.5 系列模型&#xff0c;尤其是轻量级版本 Qwen2.5-0.5B-Instruct&#xff0c;凭…

作者头像 李华
网站建设 2026/4/16 11:52:06

Qwen2.5-0.5B多语言支持:扩展外语对话能力

Qwen2.5-0.5B多语言支持&#xff1a;扩展外语对话能力 1. 技术背景与多语言能力演进 随着全球化应用场景的不断拓展&#xff0c;AI模型的语言理解与生成能力已不再局限于单一语种。尽管Qwen2.5系列中的0.5B版本作为轻量级指令模型&#xff0c;主要聚焦于中文场景下的高效推理…

作者头像 李华