/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */
#content_views .toc,
/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */
#content_views.markdown_views > p:empty:has(+ .toc),
#content_views.markdown_views > .toc + p:empty,
/* 富文本旧版目录标记 */
#content_views.htmledit_views #main-toc,
#content_views.htmledit_views #hr-toc,
#content_views.htmledit_views p[id*=\”-toc\”] {
display: none !important;
}
/* 目录去掉后,紧跟的首个标题不再多出一块上边距 */
#content_views.markdown_views > .toc + h1,
#content_views.markdown_views > .toc + h2,
#content_views.markdown_views > .toc + h3,
#content_views.markdown_views > .toc + h4,
#content_views.markdown_views > .toc + p:empty + h1,
#content_views.markdown_views > .toc + p:empty + h2,
#content_views.markdown_views > .toc + p:empty + h3,
#content_views.markdown_views > .toc + p:empty + h4 {
margin-top: 0 !important;
}

前言
上一篇《数据库篇 15》中,我们已经掌握了内连接、外连接、自连接和联合查询,学会了如何将多张表的数据横向或纵向拼接查询。本篇作为数据库篇的第十六篇,我们将学习另一种强大的多表查询方式——子查询。子查询允许我们在一个SQL语句中嵌套另一个SELECT语句,将复杂的查询分解为多个简单的步骤,大幅提升SQL的可读性和灵活性,是解决复杂业务查询的核心技能。
本文为Python全栈开发者与数据库入门者量身打造,系统讲解标量、列、行、表四种类型的子查询,每一种类型都有清晰的语法说明和可直接运行的实战示例,同时覆盖子查询在不同位置的使用方法,重点标注新手最容易踩的坑,即使是完全没有复杂查询经验的同学,也能快速掌握子查询的核心用法。
本节核心学习内容:
文章目录
- 前言
- 一、子查询概述
-
- 1.1 基本概念
- 1.2 子查询的适用范围
- 1.3 子查询的分类
-
- 按子查询返回结果分类
- 按子查询位置分类
- 二、标量子查询
-
- 2.1 常用操作符
- 2.2 实战示例
- 三、列子查询
-
- 3.1 常用操作符
- 3.2 实战示例
- 四、行子查询
-
- 4.1 常用操作符
- 4.2 实战示例
- 五、表子查询
-
- 5.1 常用操作符
- 5.2 重要注意事项
- 5.3 实战示例
- 六、不同位置的子查询
-
- 6.1 WHERE之后的子查询
- 6.2 FROM之后的子查询
- 6.3 SELECT之后的子查询
- 七、综合实战演示
-
- 7.1 需求说明
- 7.2 实现代码
- 八、常见误区与避坑指南
- 九、核心总结:MySQL子查询语法速查表
- 十、专栏订阅
一、子查询概述
1.1 基本概念
SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。子查询可以将一个复杂的查询分解为多个简单的步骤,先执行内部的子查询,再将子查询的结果作为外部查询的条件或数据源。
基本语法格式:
SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);
1.2 子查询的适用范围
子查询外部的语句可以是INSERT、

