EXISTS 问题

来源:百度知道 编辑:UC知道 时间:2024/07/08 01:49:10
关系模式:

学生 (|学号|姓名 |系别 |年龄|)
|01 |赵云 |物理 | 25 |
|02 |张飞 |中文 | 26 |
|03 |关羽 |计算机| 25 |
|04 |刘备 |化学 | 27 |

课程 (|课程号|课程名|学时|)
| C1 | VC | 28 |
| C2 | C++ | 32 |
| C3 | VB | 35 |
| C4 | JAVA | 31 |

选读 (|学号|课程号|成绩 |)
| 01 | C1 | 90 |
| 01 | C2 | 88 |
| 02 | C1 | 78 |
| 02 | C4 | 80 |
| 03 | C1 | 80 |
| 03 | C2 | 90 |
| 03 | C3 | 100 |
| 03 | C4 | 98 |
| 04 | C3 | 85 |

问题:检索选读全部课程的学生姓名 .

select 学生.姓名
from 学生
where not exists(
select *
from 课程
where not exists(
select *
from 选读
where 学号=学生.学号 and 课程号=课程.课程号));
------------------------------------------------------
1.所有未选过的课程的数据集:
select *
from 课程
where no

你如果不是写论文,不要想的那么复杂。

相关子查询而已。

SELECT *
FROM 课程
WHERE NOT EXISTS (
SELECT *
FROM 选读
WHERE (课程号 = 课程.课程号))

你按照从外到内的顺序去理解他就行了。