資料庫中的巢狀Not Exists語句

2021-10-03 11:59:53 字數 1002 閱讀 5815

最近在準備複試,看到一道sql查詢題,涉及到兩層not exists,不是很理解,檢視了乙個dalao的解析之後,才明白了啥意思。

查詢選修了所有課程的學生 的姓名

select sname

from s

where not exists(

select *

from c

where not exists(

select *

from sc

where s.sno = sc.sno

and c.cno = sc.cno

))

從下往上看

select * from sc是選擇了所有的選課記錄(暫時不看兩個對等語句)

select * from c where not exists(~)是對於課表c,(結合c.cno = sc.cno)在 所有sc中選出的選課記錄 中沒有出現的課。即為沒選的課程

select sname from s where not exists(~)即判斷 該學生(結合s.sno = sc.sno) 沒選的課是否為空

原回答解釋是這樣:

----------------以下查詢選擇全部課程學生的姓名

select sname

from student

where not exists --------此處不存在配合以上student,可知查詢的是不存在沒選課的學生

----------------以下查詢學生沒選課的資訊

(select *

from course

where 

not exists -------此處增加不存在,配合上面從course的選擇可知查詢的是學生沒有選的課

----------------以下查詢查詢學生選課的資訊

(select *

from sc

where sno = student.sno and cno = course.cno

)); 

jsp中資料庫的多層while迴圈巢狀查

gly sql.executequery select yh.yhid,yh.yhmc,rctime.rctime,rctime.rclx,rctime.rcsj from rctime,yh where yh.yhid rctime.yhid while gly.next 由此 可以看出while...

怎樣使用SQL Server資料庫的巢狀子查詢

許多人都對子查詢 subqueries 的使用感到困惑,尤其對於巢狀子查詢 即子查詢中包含乙個子查詢 現在,就讓我們追本溯源地 這個問題 有兩種子查詢型別 標準和相關。標準子查詢執行一次,結果反饋給父查詢。相關子查詢每行執行一次,由父查詢找回。在本文中,我們將重點討論巢狀子查詢 nested sub...

資料庫基本SQL語句 巢狀查詢

查詢科目名稱為 語文 的所有科目成績 select from scores where subject id in select id from subject where names 語文 在where子句中對於能巢狀的子查詢的數目沒有限制,不過在實際使用時由於效能的限制,不能巢狀太多的子查詢,對...