我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL总结(十一)子查询-详解

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL总结(十一)子查询-详解

MySQL总结(十一)子查询-详解

子查询


1. 什么是子查询

-- 需求:查询开发部中有哪些员工
select * from emp;

-- 通过两条语句查询
select id from dept where name="开发部" ;
select * from emp where dept_id = 1;
-- 使用子查询
select * from emp where dept_id = (select id from dept where name="市场部");
  • 子查询的概念:
    • 1)一个查询的结果做为另一个查询的条件
    • 2)有查询的嵌套,内部的查询称为子查询
    • 3)子查询要使用括号

2. 子查询结果的三种情况

  • 1)子查询的结果是单行单列

  • 2)子查询的结果是多行单列

  • 3)子查询的结果是多行多列

3. 子查询的结果是一个值的时候

子查询结果只要是单行单列,肯定在 WHERE 后面作为条件,父查询使用:比较运算符,如:> 、<、<>、=等

SELECT 查询字段 FROM 表 WHERE 字段= (子查询);

3.1 案例一:查询工资最高的员工是谁?

-- 1) 查询最高工资是多少
select max(salary) from emp;
-- 2) 根据最高工资到员工表查询到对应的员工信息
select * from emp where salary = (select max(salary) from emp);

3.2 案例二:查询工资小于平均工资的员工有哪些?

-- 1) 查询平均工资是多少
select avg(salary) from emp;
-- 2) 到员工表查询小于平均的员工信息
select * from emp where salary < (select avg(salary) from emp);

4. 子查询的结果是多行单列

子查询结果是单例多行,结果集类似于一个数组,父查询使用 IN 运算符

SELECT 查询字段 FROM 表 WHERE 字段 IN (子查询);

4.1 案例一:查询工资大于 5000 的员工,来自于哪些部门的名字

-- 先查询大于 5000 的员工所在的部门 id
select dept_id from emp where salary > 5000;
-- 再查询在这些部门 id 中部门的名字 Subquery returns more than 1 row
select name from dept where id = (select dept_id from emp where salary > 5000);
select name from dept where id in (select dept_id from emp where salary > 5000);

4.2 案例二;查询开发部与财务部所有的员工信息

-- 先查询开发部与财务部的 id
select id from dept where name in("开发部","财务部");
-- 再查询在这些部门 id 中有哪些员工
select * from emp where dept_id in (select id from dept where name in("开发部","财务部"));

5. 子查询的结果是多行多列

子查询结果只要是多列,肯定在 FROM 后面作为表

SELECT 查询字段 FROM (子查询) 表别名 WHERE 条件;

子查询作为表需要取别名,否则这张表没有名称则无法访问表中的字段

5.1 案例:查询出 2011 年以后入职的员工信息,包括部门名称

-- 查询出 2011 年以后入职的员工信息,包括部门名称
-- 在员工表中查询 2011-1-1 以后入职的员工
select * from emp where join_date >="2011-1-1";
-- 查询所有的部门信息,与上面的虚拟表中的信息组合,找出所有部门 id 等于的 dept_id
select * from dept d, (select * from emp where join_date >="2011-1-1") e where d.`id`= e.dept_id ;

也可以使用表连接:

select * from emp inner join dept on emp.`dept_id` = dept.`id` where join_date >="2011-1-1";
select * from emp inner join dept on emp.`dept_id` = dept.`id` and join_date >="2011-1-1";

6. 子查询小结

  • 子查询结果只要是单列,则在WHERE后面作为条件
  • 子查询结果只要是多列,则在FROM后面作为表进行二次查询

OK,这篇就到这里

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL总结(十一)子查询-详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL总结(十一)子查询-详解

子查询1. 什么是子查询-- 需求:查询开发部中有哪些员工select * from emp;-- 通过两条语句查询select id from dept where name="开发部" ;select * from emp where dept_id =
MySQL总结(十一)子查询-详解
2020-06-24

MySQL总结(十)表连接查询(内、外连接)-详解

表连接查询1.什么是多表查询准备数据# 创建部门表create table dept( id int primary key auto_increment, name varchar(20))insert into dept (name) values (
MySQL总结(十)表连接查询(内、外连接)-详解
2020-11-18

实例详解mysql子查询

子查询分类 按返回结果集分类 子查询按返回结果集的不同分为4种:表子查询,行子查询,列子查询和标量子查询。 表子查询:返回的结果集是一个行的集合,N行N列(N>=1)。表子查询经常用于父查询的FROM子句中。 行子查询:返回的结果集是一个列
2022-05-19

MySQL:子查询(全面详解)

MySQL:子查询 前言一、需求分析与问题解决1、实际问题2、子查询的基本使用3、子查询的分类 二、单行子查询1、单行比较操作符2、代码示例3、HAVING 中的子查询4、CASE中的子查询5、子查询中的空值问题6、非法使用子查
2023-08-16

MySql中子查询内查询示例详解

西北望乡何处是,东南见月几回圆。 月亮又慢悠悠的挂上了天空,趁着睡前梦呓,我就带领各位可爱的读者们探索MySql最后的子查询部分。 说明:有些查询结果出来结果截图与题目要求不一样会出现多余的字段是为了方便展示结果的可读性。实际操作的读者可以
2022-05-25

MySQL慢查询日志超详细总结

目录慢查www.cppcns.com询日志概念慢查询日志相关参数慢查询日志配置日志分析工具mysqldumpslow总结慢查询日志概念MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具
2023-05-05

MySQL总结(十二)数据库事务-详解

数据库事务1. 事务的应用场景说明什么是事务?在实际的开发过程中,一个业务操作如:转账,往往是要多次访问数据库才能完成的。转账是一个用户扣钱,另一个用户加钱。如果其中有一条 SQL 语句出现异常,这条 SQL 就可能执行失败。事务执行是一个整体,所有的 SQL
MySQL总结(十二)数据库事务-详解
2020-01-22

【⑦MySQL】· 一文了解四大子查询

前言 ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL标量/单行子查询、列子/表子查询的讲解✨ 目录 前言一、子查询概念二、标量/单行子查询、列子/表子查询三、总结 一、子查询概念 子查询指一个查询
2023-08-18

Mysql查询优化之IN子查询优化方法详解

这篇文章主要给大家介绍了关于Mysql查询优化之IN子查询优化的相关资料,需要的朋友可以参考下
2023-02-09

【MySQL】一文带你了解MySQL中的子查询

文章目录 1. 需求分析与问题解决1. 1实际问题1.2 子查询的基本使用1.3 子查询的分类 2. 单行子查询2.1 单行比较操作符2.2 代码示例2.3 HAVING 中的子查询2.4 注意的问题 3. 多行子查询3.1
2023-08-18

MySQL总结(十四)DCL数据库控制语言-详解

DCL(Data Control Language)我们现在默认使用的都是 root 用户,超级管理员,拥有全部的权限。但是,一个公司里面的数据库服务器上面可能同时运行着很多个项目的数据库。所以,我们应该可以根据不同的项目建立不同的用户,分配不同的权限来管理和
MySQL总结(十四)DCL数据库控制语言-详解
2019-09-18

mysql连接查询、联合查询、子查询原理与用法实例详解

本文实例讲述了mysql连接查询、联合查询、子查询原理与用法。分享给大家供大家参考,具体如下: 本文内容:连接查询联合查询子查询from子查询where子查询exists子查询首发日期:2018-04-11连接查询:连接查询就是将多个表联合
2022-05-12

编程热搜

目录