1、子查询概念
- 出现在其他SQL语句内的select语句
- 子查询也叫作内部查询,包含子查询的语句称为外部查询或主查询
- 子查询自身可以包含一个或多个子查询,一个查询语句中可以嵌套任意数量的子查询
2、子查询的分类
- 非相关子查询
- 独立于外部查询,子查询只执行一次,执行完将结果传递给外部查询
- select * from A where A.id in (select id from B)
- 相关子查询
- 依赖于外部查询的数据,外部查询每执行一次,子查询就执行一次
- 查询每个班级成绩高于本班平均分的所有同学
-
select * from tb_lemon_grade t1
where t1.score
(select avg(t2.score) from tb_lemon_grade t2
where t1.class_name = t2.class_name);
输出最大值不需要子查询写法:
SELECT *
FROM 表名
ORDER BY id DESC LIMIT 1;
输出最大值需要子查询写法:
SELECT *
FROM 表名
WHERE id = (
SELECT MAX(id)
FROM 表名);