子查询
概述
SQL 语句中嵌套 SELECT 语句,称为嵌套子查询,又称为子查询
bash
SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);
子查询外部语句可以是 INSERT/UPDATE/DELETE/SELECT 的任何一个,也可以是其他 SQL 语句
分类
根据子查询结果不同,分为以下几类:
- 标量子查询(子查询结果为单个值)
- 列子查询(子查询结果为一列)
- 行子查询(子查询结果为一行)
- 表子查询(子查询结果为多行多列)
依据子查询位置,分为
WHERE 之后
FROM 之后
SELECT 之后
标量子查询
子查询返回的结果是单个值(数字,字符串,日期等等)最简单的形式,这种子查询称为标量子查询
常用的操作符: = <> > >= < <=
案例
查询销售部所有员工的信息
完成这个需求,我们要分成两步
- 查询
销售部
的部门 ID
bash
SELECT ID from dept WHERE NAME = '销售部';
- 根据
销售部
门 ID 查询员工信息
bash
select * from emp where dept_id = (select id from dept where name = '销售部');
查询 方东白入职之后的所有员工信息
- 查询 方东白入职的日期
bash
select entrydate from emp where name = '方东白';
- 查询入职日期在 方东白入职日期之后的员工信息
bash
select * from emp where entrydate > (select entrydate from emp where name = '方东白');