简介

子查询是指一个查询语句嵌套在另一个查询语句内部的查询
在SELECT子句中先计算子查询,子查询结果作为外层另一个查询的过滤条件。查询可以基于一个表或者多个表。

子查询

带ANY、SOME关键字的子查询

ANY和SOME是同义词,表示满足其中任意一个条件,他们允许创建一个表达式对子查询的返回值列表进行比较,只要满足其中一个条件,就返回一个结果给外层查询的条件。
1634026949.png

带ALL关键字的子查询

ALL与ANY和SOME不同,ALL需要同时满足所有内层查询的条件。
1634026963.png

带EXISTS关键字的子查询

EXISTS关键字后面可以接任意子查询,系统对子查询进行判断,如果返回至少为一行,则返回true,此时外层查询进行查询;
如果没有返回任何行,那么返回false,此时外层查询不进行查询。NOT EXISTS则相反。
1634026977.png

EXISTS与条件表达式结合

1634026986.png
1634026992.png

带IN关键字的子查询

IN关键字进行子查询时,内层查询只返回 一个数据列,这个数据列提供给外层查询进行比较。NOT IN 则相反。
1634027005.png
1634027026.png

带比较运算符的子查询
1634027033.png