分类
按结果分类
单行单列子查询(标量子查询)
指返回的结果为单行单了,也称为标量子查询,可用于=,!=, >,<等条件语句中。
多行单列子查询
指返回的结果包含单个列,但包含了多行。可用于 in,not in, exists, not exists,=、!=、<> all/any 条件语句中。
多行多列子查询
指返回的结果包含多行多了,可用于 (xxx,xxx, xxx) in/not in subquery 等条件语句。
按是否与包含语句独立分类
非关联子查询
未引用包含查询中的列。可以先执行子查询,再执行包含查询
关联子查询
引用了包含查询中的列。为包含语句的每个候选行执行子查询,再根据子查询的结果过滤查询结果。
杂记
使用group by 子语句时,出现在select 目标属性中的属性,如果没有出现在group by字句中,则必须为聚集函数中。
having字句中的属性必须为聚集函数或则出现在group by字句中的属性