MySQL零基础教程14—子查询

子查询比较简单,我们还是通过案例引入。

有时候我们查询的时候,需要用到的不止一个表的数据,比如下面的场景:

查询名字叫李晓红同学的班主任姓名

我们提供三个表的基础信息如下:



从三张表的结构,我们不难看出,想要根据student_name找到teacher_name,是这样一条链路:

很显然,我们不能只查询一个表就得到想要的结果,我们需要多写一条查询,将其结果作为另外一条查询的条件,这就是一种嵌套的结构,而在mysql中,是允许这种sql构建方式的,所以我们最终的sql就是:

sql 复制代码
SELECT
    teacher_name
FROM
    teachers
WHERE
    teacher_id = (
        SELECT
            head_teacher_id
        FROM
            classes
        WHERE
            class_id = (
                SELECT
                    class_id
                FROM
                    students
                WHERE
                    student_name = '李晓红'
            )
    );

其实子查询就是完整的sql语句,查询结果可以用于:

  1. 用查询的特定值作为过滤条件
  2. 作为过滤范围
  3. 作为计算字段

用法非常多,就看自己的想象力了

相关推荐
兜有米啦6 分钟前
数据库第二次作业
数据库
nVisual42 分钟前
机柜PDU安装位置与空间建模方案
大数据·网络·数据库·信息可视化·数据中心基础设施管理
weixin_66842 分钟前
Cursor-superpowers插件用法
数据库·人工智能
NWU_白杨1 小时前
三种常用的数据存储技术
数据库·redis·mysql·sqlite
吃饱了得干活1 小时前
亿级订单表分库分表设计,从0到1全流程
java·数据库·面试
蓝创工坊Blue Foundry1 小时前
图片文字提取到 Excel:批量任务如何先定义要交付的字段
运维·服务器·开发语言·数据库·自动化·ocr·excel
一嘴一个橘子1 小时前
MySqL 的 B+树、 叶子节点、非叶子节点
mysql
麦聪聊数据2 小时前
企业数据市场建设(三):API 化服务封装,让数据开箱即用、避免重复开发
数据库
脱胎换骨-军哥2 小时前
C++数据库存储引擎内核开发:B+树索引与MVCC并发控制的完整实现
数据库·c++·b树
麦聪聊数据2 小时前
企业数据市场建设(四):流程闭环与价值运营,让数据市场真正转起来
运维·数据库