子查询(subquery)是指出现在其他SQL语句内的SELECT子句
例如:SELECT * FROM t1 WHERE col1=(SELECT col2 FROM t2);其中SELECT *FROM t1, 称为Outer Query/Outer Statement SELECT col2 FROM t2, 称为SubQuery
子查询的外层查询可以是:SELECT, INSERT , UPDATE, SET 或DO。
而且在子查询中可以包含多个关键词: group by,order by,limit级相关函数。。
引发子查询的情况有: 比较运算符,in(Not)in运算符,exist(Not exists)引发的子查询
子查询的返回结果可以是:返回标量、一行、一列或子查询。
用ANY、SOME或ALL修饰比较运算符
- ANY 或=SOME等价于 IN
- ALL
- !=ALL或<>ALL与NOT IN等效
- [NOT] EXISTS 如果子查询返回任意行,EXISTS将返回TRUE;else FALSE。