子查询
子查询是指出现在其他SQL语句内的SELECT子句
- 子查询嵌套在查询内部,且必须始终出现在圆括号内。
- 可以包含多个关键字或者条件,如
DISTINCT
、GROUP BY
、ORDER BY
、LIMIT
、函数等 - 外层查询可以是:
SELECT
、INSERT
、UPDATE
、SET
或DO
- 返回值:标量、一行、一列或者子查询
|
|
SELECT * FROM t1;
称为Outer Query/外查询/Outer StatementSELECT column1 FROM t2;
称为Sub Query/子查询
使用比较运算符的子查询
|
|
语法结构1operand comparison_operator [ANY|SOME|ALL] subquery
当子查询返回多个结果的时候就可以用到ANY
、SOME
、ALL
修饰符的比较运算符
Any: >Any 表示至少大于一个值,即大于最小值。
Any:
All: <All 表示小于每一个值。换句话说,它表示小于最小值
ANY: =ANY 或者 SOME 都是等于他们本身
ANY | SOME | ALL | |
---|---|---|---|
> >= | 最小值 | 最小值 | 最大值 |
< <= | 最大值 | 最大值 | 最小值 |
= | 任意值 | 任意值 | – |
<> != | – | – | 任意值 |
|
|
使用[NOT] IN 的子查询
语法结构1operand comparison_operator [NOT] {IN|EXISTS} (subquery)
IN 相当于 =ANY 或 =SOME
NOT IN 相当于 !=ALL 或 <>ALL
|
|
使用[NOT] EXISTS 的子查询
如果子查询返任何行,EXISTS返true;反之,返false。
|
|