Skip to content

子查询

概述

SQL 语句中嵌套 SELECT 语句,称为嵌套子查询,又称为子查询

bash
SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);

子查询外部语句可以是 INSERT/UPDATE/DELETE/SELECT 的任何一个,也可以是其他 SQL 语句

分类

根据子查询结果不同,分为以下几类:

  • 标量子查询(子查询结果为单个值)
  • 列子查询(子查询结果为一列)
  • 行子查询(子查询结果为一行)
  • 表子查询(子查询结果为多行多列)

依据子查询位置,分为

  1. WHERE 之后

  2. FROM 之后

  3. SELECT 之后

标量子查询

子查询返回的结果是单个值(数字,字符串,日期等等)最简单的形式,这种子查询称为标量子查询

常用的操作符: = <> > >= < <=

案例

查询销售部所有员工的信息

完成这个需求,我们要分成两步

  1. 查询销售部的部门 ID
bash
SELECT ID from dept WHERE NAME = '销售部';
  1. 根据销售部门 ID 查询员工信息
bash
select * from emp where dept_id = (select id from dept where name = '销售部');

查询 方东白入职之后的所有员工信息

  1. 查询 方东白入职的日期
bash
select entrydate from emp where name = '方东白';
  1. 查询入职日期在 方东白入职日期之后的员工信息
bash
select * from emp where entrydate > (select entrydate from emp where name = '方东白');