MySQL 视频课 · 50 集 / 子查询:标量、列、行、表子查询 / P43

第 43 集 / 共 50 · 子查询:标量、列、行、表子查询 · 视频 p=43 · 时长 2:30

P43 43. 基础-多表查询-子查询介绍

讲义 5.6.1 子查询概述 p80–81

按主题对应,非逐句切分

来源与核对说明

以同版讲义的公开镜像核对章节与页码(镜像非官方出品);非逐字稿,示例为原创补充。

本页是学习笔记,不等同于视频逐字稿。原声字幕未取得(匿名接口字幕轨为空且需登录,未使用任何账号),也没有逐句讲解记录;讲义只按节与页码对应,切点未逐句确证。

讲义索引:p80–81 · 5.6.1 子查询概述 · 切点 notexact

讲义是第三方公开镜像(95 页 PDF),不是官方原件;这里只用它核对章节顺序与页码,不转载正文。

完整来源说明与变更记录 →

看视频,对照阅读:在新标签打开原视频(p=43) · 先看跟播对照

子查询不是新语法,只是把一条 SELECT 的结果交给另一条 SELECT 用。先看内层返回什么形状,再接。

复习模式:快速跳知识点(详解在下方各节)

复习顺序:先看“一句话理解”能否复述,再扫步骤,最后做自测;答不出时回到小例与易错。

一句话理解

子查询就是 SELECT 里再套一个 SELECT:先算出内层的结果,再拿给外层当条件或当一列。

跟播:视频里 ↔ 本站

视频里 / 原课字段本站对应
emp / dept 两张表employee / department 两张表
子查询可以出现在 WHERE、SELECT、FROM同左(位置与表的行数无关)

看视频时以讲义表为准,跟练时用本站表;结构相同、数字不同。

按这 4 步做

  1. 先单独把内层跑一遍。看它返回“一个值、一列多行、一行多列、还是一张表”,这既是分类依据,也决定外层怎么接。
  2. 再决定放哪里。WHERE 后面当条件最常见;SELECT 后面当一列(每行都带同一个值);FROM 后面当临时表。 位置不同语义也不同:WHERE 里是过滤,SELECT 里是给每行加一列。
  3. 最后检查外层能不能接得住。一个值可用 =、>;一列要用 IN;多列要用行比较;一张表必须放 FROM 并起别名。
  4. 子查询不只能待在外层 SELECT 里,INSERT、UPDATE、DELETE 中同样可以嵌。

小例

先准备本集练习数据:p43.sql · 练习库说明

SQL 示例
-- 表:department(1 研发部, 2 测试部, 3 运营部)
-- employee:小林22/研发8000/上级2,小周25/研发10000/无上级,小陈30/测试12000/上级2,小李21/无部门/NULL/上级2
-- 建表与插入语句见本页练习脚本 p43.sql(独立练习库 mysqlnotes_p43,跑一次就有这两张表)

SELECT name AS 员工, salary AS 工资,
       (SELECT AVG(salary) FROM employee) AS 公司平均
FROM employee
WHERE dept_id = 1;

内层先算出全公司平均 10000(8000+10000+12000 除以 3,NULL 不参与)。外层查研发部两人,每行都带上这个 10000。预期 2 行:小林 8000 / 10000、小周 10000 / 10000。放在 SELECT 列表里的子查询必须是单值,返回多行会报错。 注意这个平均是整张表的,不随外层部门变化;要“本部门平均”,得把外层的 dept_id 传进内层,也就是后面的相关子查询。

易错点

30 秒速记

子查询=嵌套 SELECT;先看返回形状再选接法;WHERE/SELECT/FROM 三个位置;标量/列/行/表四类。

自测(3 题,先答再展开)

自测 1:怎么判断该用标量还是列子查询?

先单独跑内层看返回:一个值用标量比较,一列多行用 IN。

自测 2:SELECT 后的子查询返回多行会怎样?

报错,SELECT 列表位置要求单值。

自测 3:子查询放在 FROM 后面要注意什么?

它会被当成派生表,MySQL 8 必须给别名,外层只能用别名引用它的列。

材料与来源

展开材料出处、讲义页码与证据等级
材料类型 / 位置支持了什么
BV1Kr4y1i7ru P43(平台标题)平台视频页 · P43静帧 t=44s 显示定义“SQL 语句中嵌套 SELECT 语句,称为嵌套查询/子查询”及 WHERE 位置的语法
MySQL 8.0 Reference Manual — Subqueries官方文档仅用于核对子查询语义与错误码,不是课程材料

本集无逐字稿(匿名 player/v2 返回 subtitles=[]、need_login_subtitle=true),并以讲义公开镜像讲义 5.6.1 子查询概述(p80–81)核对章节与主题;画面静帧只用于确认场景,不是内容边界。示例表与数据为本笔记自建,不是课程原表;不含原始帧或字幕。 分类(标量/列/行/表)按后续四集标题与本节定义整理。

讲义对照:讲义 5.6.1 子查询概述 · p80–81(公开镜像;按主题对应,切点 notexact)

  • 画面静帧 9 帧,采样点 0:12–2:17 / 全片 2:30(只用于确认画面主题,不作内容边界)
  • 原声字幕未取得:匿名接口字幕轨为空且需登录,未使用任何账号

等级含义:平台视频页 / 官方文档 / 课件 = 原始材料;二手整理 = 参考;推断 = 未经核实。站内补充的解释与练习会在此说明。

下载本集 Markdown