问题
检索选修所有课程的学生的学号
解决方案
SELECT SN FROM S WHERE NOT EXISTS (SELECT * FROM C WHERE NOT EXISTS (SELECT * FROM SC WHERE SC.CNO=C.CNO AND SC.SNO=S.SNO));
解释
- EXISTS 子查询找到的提交
NOT EXISTS 子查询中 找不到的提交 - 建立程序循环的概念,这是一个动态的查询过程,如 FOR循环
%伪代码 for S =1:m for C = 1:n if S has C, None else, 记录 S %S现在为没有选择全部课程的学生 return S 的补集