概念
一条查询语句中又嵌套了另一条完整的select语句,其中被嵌套的select语句,称为子查询或内查询,在外面的查询语句,称为主查询或外查询。
分类
按子查询出现的位置分类:
- select后面:仅仅支持标量子查询。
- from后面:表子查询。
- where或having后面:标量子查询、列子查询、行子查询。
- exists后面(相关子查询):表子查询。
按结果集的行列数不同分类:
- 标量子查询(结果集只有一行一列)
- 列子查询(结果集只有一列多行)
- 行子查询(结果集有一行多列)
- 表子查询(结果集一般为多行多列)
一、where或having后面
特点
- 子查询放在小括号内。
- 子查询一般放在条件的右侧。
- 标量子查询,一般搭配单行操作符使用:>、<、=、>=、<=、<>
- 列子查询,一般搭配多行操作符使用:any/some、all、in、not in
- 子查询优先于主查询执行,主查询使用了子查询的执行结果。
三、from后面
特点
- 将子查询的结果充当一张表,要求必须起别名。