Oracle语法中子查询的多行子查询

子查询(内查询)在主查询之前一次执行完成,子查询的结果被主查询(外查询)使用,子查询要包含在括号内,将子查询放在比较条件的右侧,多行操作符对应多行子查询。

/查询所有选修“计算机导论”课程的成绩表/
select Sno 学号, a.Cno 课程号, b.Cname 课程名称, a.Degree 分数
from Score a
join Course b
on a.cno = b.cno
where a.Cno in (select Cno from Course where Cname in (‘计算机导论’))

上面是多行子查询的语句,使用关键字“in”’,等于列表中的任意一个,上面是等于课程表里的课程是‘计算机导论’的学生,下面是结果图。
Oracle语法中子查询的多行子查询_第1张图片

/查询所有选修“计算机导论”课程的成绩表低于91分的同学/
select Sno 学号, Cno 课程号, Degree 分数
from Score
where Cno in (select Cno from Course where Cname = (‘计算机导论’))
and Degree < all (select Degree from Score where Degree in 91)
and Degree < 91

上面是多行子查询的语句,使用关键字“all”’,和子查询返回的所有值比较,上面是和课程里的课程为‘计算机导论’的学生的成绩相比较,返回所有成绩低于91分的同学,下面是结果图。
在这里插入图片描述

/查询所有选修“计算机导论”课程的成绩表低于或者等于88分的同学/
select Sno 学号, Cno 课程号, Degree 分数
from Score
where Cno in (select Cno from Course where Cname = (‘计算机导论’))
and Degree <= any (select Degree from Score where Degree in 88)
and Degree <= 88

上面是多行子查询的语句,使用关键字“any”’,和子查询返回的某一个值比较,上面是和课程里的课程为‘计算机导论’的学生的成绩相比较,返回成绩低于或者等于88分的同学,下面是结果图。
Oracle语法中子查询的多行子查询_第2张图片
总结:使用多行子查询对应的是使用多行比较符,返回多行,体会了“in”,“any”和“all”的区别,在查询时基于未知的值时,应使用子查询。

你可能感兴趣的:(oracle数据库)