当一个查询是另一个查询的条件时称为子查询。
标量子查询:子查询得到的结果是一个数据(一行一列)
基本语法:select * from 数据源 where 条件判断 =/<> (select 字段名 from 数据源 where 条件判断);
列子查询:子查询得到的结果是一列数据(一列多行)
基本语法:select * from 数据源 where 条件判断 in (select 字段名 from 数据源 where 条件判断);
行子查询:子查询返回的结果是一行多列
基本语法:select * from 数据源 where 条件[(构造一个行元素)]=(行子查询);
表子查询:子查询返回的是多行多列
基本语法:select 字段表 from (表子查询) as 别名 [where] [group by] [having] [order by] [limit];
Exists 子查询:查询返回结果只有0或1
基本语法:select * from 数据源 where exists(查询语句);
子查询中特点关键字的使用
In:主查询 where 条件 in(列子查询);
Any关键字
=any(列子查询):条件在查询结果中有任意一个匹配即可,等价于in
<>any(列子查询):条件在查询结果中不等于任意一个
1 =any(1,2,3) ---- true
1 <>any(1,2,3) ---- true
Some关键字
All 关键字
=all(列子查询):等于里面所有
<>all(列子查询):不等于里面所有