1.定义:一个查询的结果作为领一个查询的条件,作为条件的查询通常称为子查询
2.优点:执行效率高
举例:
1.查询成绩大于平均成绩的学生信息
分析:
第一步:查询出平均成绩:select avg(salary) from student;
第二步:将第一步的结果作为条件查询出成绩大于平均成绩的学生信息 : select * from student where salary >(select avg(salary) from student);
小插曲:
select的结果集的分类:
一行一列(一个数值)、N行一列,一行N列、N行N
3.子查询的结果集分类:
标量子查询:子查询返回一个数值
列子查询:子查询返回N行一列
行子查询:子查询返回一行N列
表子查询:子查询返回N行N列
小插曲:查询出年龄小于等于26的学生的男生总数和女生总数
分析:小于等于26肯定是where条件 要求得男生和女生的总数则必须分组,然后在统计总数即可
语句:select sex,count(*) as num from student where age<26 group by sex;