一、子查询的基本理论
1.子查询概念:
()
子查询也叫做内部查询,包含子查询的语句称为外部查询或主查询
2.子查询的分类
非相关子查询 --- 用的最多
子查询的结果作为外部查询的条件
子查询的结果作为表
相关子查询(关联)
依赖于外部查询的数据,外部查询每执行一次,子查询就执行一次
外部查询先查询,在执行子查询
子查询的结果作为列
案例:
如:第一题,建表
drop table if existstb_lemon_score;create table tb_lemon_score( sname varchar(20), course varchar(20), score tinyint);inserttb_lemon_scorevalues('张三', '语文', 71),
('张三', '数学', 75),
('李四', '语文', 76),
('李四', '数学', 90),
('王五', '语文', 81),
('王五', '数学', 100),
('王五', '英语', 90 );
查询:查询出每门课程都大于80分的学生姓名
方式一
select sname,score from tb_lemon_score group by sname having min(score)>80;
方式二:子查询的结果作为外部查询的条件
先查询出小于80的
select * from tb_lemon_score where sname not in (select sname from tb_lemon_score where score<=80);
方式三:子查询的结果作为表
先查询出每个人的最小成绩,结果作为表,在查询大于80分的学生
--每人的最小成绩
select sname,min(score) 最小成绩 from tb_lemon_score group