SQL 查询问题 理解不了

来源:百度知道 编辑:UC知道 时间:2024/06/23 23:27:20
找出那些在所有教室都上过课的教师的名字,有四张表(Student,Class,Enrolled,Faculty)

SELECT DISTINCT F.fname
FROM Faculty F
WHERE NOT EXISTS (( SELECT *
FROM Class C )
EXCEPT
(SELECT C1.room
FROM Class C1
WHERE C1.fid = F.fid ))

这段查询还没理解,尤其是 那字段"NOT EXISTS"

NOT EXISTS (field_a) 不存在于field_a条件内的所有数据
EXCEPT(field_b) 除了field_b可以允许以外。

这个查询的意思是,如果"NOT EXISTS"后面()中没有查询到任何记录,就会执行
SELECT DISTINCT F.fname
FROM Faculty

但是不知道这语句执行结果对不对,至少写得不是很清晰。

WHERE NOT EXISTS (( SELECT *
FROM Class C )
如果class C不存在数据

好多语法规则都忘了

not exists 和 except记得好像是匹配的