章节3.4.3
嵌套查询
在SQL语言中,一个SELECT-FROM-WHERE 短句称为查询块。一个查询语句块嵌套在另外一个查询块的where子句中,称为嵌套查询。其中外层查询也称为父查询,外层查询。内层查询也称子查询,内层查询。
1.带有IN谓词的子查询
子查询结果往往是一个集合,所以谓词 IN 是嵌套查询中最经常使用的谓词。
例题1:查询与“刘晨”在同一个系学习的学生。
①确定“刘晨”所在系名
SELECT Sdept
FROM Student
WHERE Sname = '刘晨';
//结果为 CS
②查找所有在CS系里学习的学生
SELECT Sno,Sname,Sdept
FROM Student
WHERE Sdept = 'CS';
完整代码:
SELECT Sno,Sname,Sdept
FROM Student
WHERE Sdept IN
(
SELECT Sdept
FROM Student
WHERE Sname = '刘晨');
在本例中,子查询的查询条件不依赖于父查询,称为不相关子查询。
例题2:查询选修了课程名为“信息系统”的学生学号和姓名。
SELECT Sno,Sname
FROM Student
WHERE Sno IN
(SELECT Sno