在SQL语言中,一个select-from-where语句称为一个查询块。将一个查询嵌套在另一个查询块中的where子句或HAVING短语的条件中的查询称为嵌套查询。例如:
select sname
from student
where sno in
(select sno
from sc
where cno='2')
上层的查询块称为外层查询或父查询,下层查询块称为内层查询或子查询。SQL允许多层嵌套查询。即一个子查询中还可以嵌套其他子查询。需要特别指出的是,子查询的select语句中不能使用ORDER BY 子句,ORDER BY 子句只能对最终查询结果排序。
嵌套查询一般的求解方法:由里向外处理。即每个子查询在上一级查询处理之前求解,子查询的结果用于建立其父查询的查找条件。