**
子查询
子查询:一个select语句中包含一个或多个完整的select 语句。
子查询包含:标量子查询,行子查询,列子查询,表子查询。
标量子查询:返回的结果是一个数据(单行单列)
where 子句中不能使用聚合函数
例子:
select *
from emp
where sal>(select avg(sal) from emp);
行子查询:返回的结果是一行多列;
列子查询:返回的结果是一列多行;(in,all,any)
表子查询:返回的结果是一张表(多行多列)(注意引用别名问题)
子查询出现的位置:
出现在select子句中:返回的结果作为主查询的一个字段或计算值(标量子查询或列子查询)
出现在where/having 子句中:返回的结果作为主查询的条件(标量子查询、行子查询、列子查询、表子查询)
注:where 子句中不能出现聚合函数
出现在from/join子句中:返回的结果作为主查询的一个表(标量子查询、行子查询、列子查询、表子查询)
表子查询中,必须添加表别名,如果需要引用表子查询中的计算字段,必须添加列别名才可以引用。