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”’,等於列表中的任意一個,上面是等於課程表裏的課程是‘計算機導論’的學生,下面是結果圖。
在這裏插入圖片描述

/查詢所有選修“計算機導論”課程的成績表低於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分的同學,下面是結果圖。
在這裏插入圖片描述
總結:使用多行子查詢對應的是使用多行比較符,返回多行,體會了“in”,“any”和“all”的區別,在查詢時基於未知的值時,應使用子查詢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章