今天来学习MySQL中的子查询
。子查询
就是指在一个查询之中嵌套了其他的若干查询,即在一个select
查询语句的where
和from
子句中包含另一个select
查询语句,外层select
查询语句称为外层查询
或父查询
,where
子句中的select
语句称为内层查询
或子查询
。有时把上面这种情况也称为嵌套查询
。用户可以使用多个简单的查询构成复杂的查询。本篇文章使用的数据和上一篇文章(MySQL学习笔记之对单表数据记录的查询操作)是一样的。
简单子查询
最简单的子查询是返回一个值,通常和比较运算符连用。如查询与“刘晨”在同一个系学习的学生:
# 查询与刘晨在同一个系学习的学生
select s_id, s_name, s_dept
from tab_student
where s_dept = (
select s_dept
from tab_student
where s_name = '刘晨'
);
本样例中,子查询的查询条件是不依赖父查询,这称为不相关子查询
,如果子查询的查询条件依赖于父查询,就被称为相关子查询
。
子查询和IN、ANY、ALL、EXISTS 关键字的组合
一般当子查询返回的数据记录为多条时,一般会和IN、ANY、ALL和EXISTS
等关键字组合使用。
子查询和IN关键字的组合
in
关键字主要用于查找属性值是否属于指定的集合,在《MySQL学习笔记之对单表数据记