如果一个select语句能够返回单个值或者一列值,且该select语句嵌套在另一个SQL语句中,那么该select语句称为子查询,通常将子查询写在小括号内。
例如 , 通过子查询找到张三的年龄,再去与外层查询的age字段比较,得到结果;
select * from 表 where age
(select age from 表 where name='张三');
对子查询返回的数据结果分类,可以分为 表子查询(单行或多行数据),列子查询(某列数据),和标量子查询(具体某个值)。
通过子查询返回相同数据类型的数据集合进行比较,通常与比较操作符(>,<,=,!=,<>)搭配使用。
IN 判断是否在集合中
例:SELECT * FROM A WHERE cc IN (SELECT cc FROM B)
ANY 需要与比较操作符一起使用,与子查询返回的任何值做比较
例:SELECT * FROM A WHERE cc > any(SELECT cc FROM B)
#理解为,大于集合中任意一个值即为True
ALL 需要与比较操作符一起使用,与子查询返回的所有值做比较
例:SELECT * FROM A WHERE cc < all(SELECT cc FROM B)
#理解为,小集合中所有的值即为True