sql2000嵌套查询01--带有IN谓词的子查询

来源:互联网 发布:python网页重定向 编辑:程序博客网 时间:2024/06/06 10:56

在嵌套查询中,子查询的结果往往是一个集合,所以谓词IN是嵌套查询中最经常使用的谓词。

例37:查询与“刘晨”在同一个系学习的学生。

(1)确定“刘晨”所在系名

select  sdeptfrom student where sname='刘晨'

(2)查找所有在IS系学习的学生

select sno,sname,sdeptfrom studentwhere sdept ='is'

将第(1)步的查询嵌入到第(2)步的查询的条件中,语句如下:

select sno,sname,sdeptfrom studentwhere sno in       (select sdept        from student        where sname ='刘晨')

也可用自身连接来完成:

select s1.sno,s1.sname,s1.sdeptfrom student s1,student s2where s1.sdept =s2.sdept and s2.sname ='刘晨'

本例中父查询和子查询中均引用了student表,可以像身身连接那样用别名将父查询中的student与表子查询中的student表区分开

例38:查询选修了课程名为“信息系统”的学生学号和姓名

select sno,snamefrom studentwhere sno in      (select sno      from sc      where cno in              (select cno              from course              where cname='信息系统'))

本查询同样可以用连接查询实现:

select student.sno,snamefrom student,sc,coursewhere student.sno= sc.sno and      sc.cno= course.cno  and      course.cname='信息系统'


上面的两个例子中的各个子查询都只执行一次,其结果用于父查询。子查询的查询条件不依赖于父查询,这类子查询称为不相关子查询。这是最简单的一类子查询


 


 

0 0