子查询
子查询类似于套娃问题,就是用上一层查询的结果作为下一层查询的条件,进行最终的查询,有时候可能会套上很多层,难度不大,但是不太好想,在实际开发中可读性不高,效率比较低,所以尽量不使用子查询为好。
Q:如何查询“不想毕业”同学的同班同学?
- 先查询出“不想毕业”同学的班级号class_id
- 再查询哪些同学的class_id与它相同。
这是两个简单的查询语句,那么我们把它结合起来就是子查询。
先执行第二行的查询语句,将这个查询结果,作为外层查询的条件。子查询只返回一条记录,所以最外层查询使用=比较即可。
那么问题来了,如果我想查询的记录不止一条呢
in关键字
Q:如何查询“语文”或“英文”课程的成绩信息?
- 先查询出“语文”或“英语”的课程号course_id;
- 再根据course_id查询到对应的成绩,此时的成绩就不仅仅是一条了。