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. 作为计算字段

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

相关推荐
辞砚技术录30 分钟前
MySQL面试题——索引2nd
数据库·mysql·面试
linweidong42 分钟前
C++thread pool(线程池)设计应关注哪些扩展性问题?
java·数据库·c++
墨笔之风1 小时前
java后端根据双数据源进行不同的接口查询
java·开发语言·mysql·postgres
欧亚学术2 小时前
突发!刚刚新增17本期刊被剔除!
数据库·论文·sci·期刊·博士·scopus·发表
黑白极客2 小时前
怎么给字符串字段加索引?日志系统 一条更新语句是怎么执行的
java·数据库·sql·mysql·引擎
大厂技术总监下海2 小时前
数据湖加速、实时数仓、统一查询层:Apache Doris 如何成为现代数据架构的“高性能中枢”?
大数据·数据库·算法·apache
LeenixP3 小时前
RK3576-Debian12删除userdata分区
linux·运维·服务器·数据库·debian·开发板
知行合一。。。3 小时前
Python--03--函数入门
android·数据库·python
哈里谢顿3 小时前
小探mysql覆盖索引
mysql
X***07883 小时前
理解 MySQL 的索引设计逻辑:从数据结构到实际查询性能的系统分析
数据库·mysql·sqlite