子查询
单行子查询
单行子查询表示返回的结果是单行的
1.查询与“不想毕业” 同学的同班同学
- 先查询 ‘不想毕业’ 该同学的 classes_Id 是多少
- 再查询 class_Id 和上面 classes_Id相等的同学的名字
select name, classes_Id from student
where classes_Id =
(select classes_id from student
where name = '不想毕业');
多行子查询
多行子查询表示返回的结果是多行的
1.查询“语文”或“英文”课程的成绩信息
- 先查询出语文和英语课程的 course_id
- 再查询 score 表 看 course_Id 是否和上面查询的 course_id 相等
select * from score
where score.course_id
in(select id from course
where name = '语文' or name = '英文');
- 另一种 exists 写法
select * from score
where exists
(select score.course_id from course
where (name = '语文' or name = '英文')
and course.id = score.course_id);
合并查询(union)
- 查询id小于3,或者名字为“英文”的课程
select * from course where id < 3
union
select * from course where name = '英文';