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

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

相关推荐
隔振降噪研究员3 分钟前
裁断机一响,楼板为什么会跟着抖?
大数据·linux·数据库·人工智能
软件派1 小时前
生产动态数据智能风控:阈值判别、趋势预测、异常识别算法工程落地实战
前端·数据库·算法
ss2739 小时前
PostgreSQL常见索引问题与解决方案
数据库·postgresql
小徐不徐说9 小时前
序列化与反序列化:把 C++ 对象可靠地保存下来
开发语言·数据库·c++·php
瀚高PG实验室10 小时前
发布端逻辑复制槽消失
数据库·postgresql·瀚高数据库
ss27311 小时前
PostgreSQL慢查询定位与优化
数据库·postgresql
香蕉大香蕉(06敬畏市场)11 小时前
MySQL 单点详解(07)
java·数据库·mysql·ai·博客·八股
smilejingwei12 小时前
TRAE 插件上新 | SQLazy:让 AI 写出可信复杂 SQL
数据库·人工智能·sql
我要见SA姐112 小时前
GitHub Actions 自动化:5 个真实运维提效案例
运维·数据库·机器学习·oracle·回归