最近在準備複試,看到一道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子句中對於能巢狀的子查詢的數目沒有限制,不過在實際使用時由於效能的限制,不能巢狀太多的子查詢,對...