【MySQL】(基础篇十二) —— 子查询

分组数据

本文介绍什么是子查询以及如何使用它们。

SQL允许我们创建子查询(subquery),即嵌套在其他查询中的查询。这样可以实现更复杂的查询,理解这个概念的最好方法是考察几个例子。

利用子查询进行过滤

需求:查询employees表中department_id为IT的所有员工信息

要实现这个查询,首先要在departments表中查找到it对应的department_id,然后再根据department_id在employees表中查询对应的员工信息。要在一个语句中完成两次查询,使用子查询可以很好地完成任务。

sql 复制代码
SELECT  * 
FROM `employees`
WHERE department_id IN (
      SELECT department_id
      FROM `departments`
      WHERE department_name = 'it'
);

在SELECT语句中,子查询总是从内向外处理。在处理上面的SELECT语句时,MySQL实际上执行了两个操作。先执行内部的子查询,然后将结果返回给外面的查询

在WHERE子句中使用子查询(如这里所示),应该保证SELECT语句具有与WHERE子句中相同数目的列。通常,子查询将返回单个列并且与单个列匹配,但如果需要也可以使用多个列。

作为计算字段使用子查询

需求:查询departments表中,每个部门拥有的员工数量

员工数量在employees表中使用聚集函数查询,然后作为子查询传递回给departments表中

sql 复制代码
SELECT department_id, department_name, 
     (SELECT COUNT(*)
     FROM employees
     WHERE employees.department_id = departments.department_id) as total_people 
FROM departments

运行结果:

相关推荐
777VG5 小时前
PostgreSQL +martin将多张表输出成一个 MVT
前端·数据库·postgresql
aax12134536 小时前
VOC 集群治理工程实操|美丽蓝天绿岛项目 RTO 工艺选型、管控方案与申报要
大数据·数据库·人工智能
IvorySQL6 小时前
PG 日报|优化缓冲区批量扫描,降低多套接字并发竞争
数据库·人工智能·postgresql·开源·区块链
这个DBA有点耶6 小时前
交易型数据库是什么?OLTP核心能力与2026选型指南
数据库·数据仓库·sql·database·数据库架构·olap·dba
大熊猫侯佩6 小时前
WWDC26 全新 SwiftData 的 .codable 宏选项:它不是泛型专用胶水
数据库·swift·apple
童谣19 小时前
越华环保集团市级统筹申报数字化中台:政策校验与减排仿真一体化架构
数据库·架构
制造数据与AI践行者老蒋9 小时前
离谱!PromptTemplate 遇上 JSON,花括号直接引发解析战争
数据库·microsoft·json
中微极客9 小时前
用LangChain 0.3构建生产级RAG与Agent:从API集成到Streamlit部署
数据库·人工智能·langchain
吴声子夜歌9 小时前
MongoDB 4.x——并发优化
数据库·mongodb
不如语冰10 小时前
AI大模型入门-Python进阶-上下文管理与with语句
开发语言·数据结构·数据库·人工智能·pytorch·redis·python