原标题:【进阶】MySQL中的子查询和联合查询
前言
前面说了很多MySQL中的查询,比如条件查询、分组聚合查询、连接查询,今天来说一下另外两个非常的重要的查询,MySQL中的子查询和联合查询。
子查询
子查询也称嵌套查询,是将一个查询语句嵌套在另一个查询语句的WHERE子句或者HAVING短语中,前者被称为内层查询或子查询,后者被称为外层查询或父查询。在整个SELECT语句中,先计算子查询,然后将子查询的结果作为父查询的过滤条件,嵌套查询可以用多个简单的查询构成一个复杂的查询,用来增强SQL的查询能力。
1、带IN关键字的查询
带IN关键字的子查询是最常用的一类子查询,用于判定一个给定值是否存在与子查询的结果集中,使用IN关键字进行子查询是,内层查询语句仅仅返回一个数据列,其值将提供给外层查询进行比较操作。
#在学生表tb_student中,将学号出现在成绩表tb_score中(表明该学生选修了课程)的学生姓名查询出来
SELECT studentName
FROM tb_student
WHERE tb_student.studentNo IN
(SELECT DISTINCT tb_score, studentNo FROM tb_score);
或
SELECT DISTINCT studentName
FROM tb_student, tb_score
WHERE tb_student.studentNo = tb_score.studentNo;
说明:在处理这类子查询时MySQL实际上执行了两个操作,即先执行内层查询,再执行外层查询