看下例题:
求没有选修C2课程的学生姓名
SELECT 姓名
FROM 学生
WHERE NOT EXIST(SELECT*
FORM 选课
WHERE 学生.学号=学号 AND 课程号='C2');
为什么不能写成:
SELECT 姓名
FROM 学生,选课
WHERE 学生.学号=选课.学号 AND 课程号<>'C2';谢谢了,不怎么明白哦~~~
求没有选修C2课程的学生姓名
SELECT 姓名
FROM 学生
WHERE NOT EXIST(SELECT*
FORM 选课
WHERE 学生.学号=学号 AND 课程号='C2');
为什么不能写成:
SELECT 姓名
FROM 学生,选课
WHERE 学生.学号=选课.学号 AND 课程号<>'C2';谢谢了,不怎么明白哦~~~
(SELECT* FORM 选课 WHERE 学生.学号=学号 AND 课程号='C2');
--学生表一般姓名不重复
SELECT 姓名 FROM 学生,选课 WHERE 学生.学号=选课.学号 AND 课程号<>'C2';
--选课表,一个学号没有选'C2'还可以选别的多门课->所以重复了很多姓名
--另外,一个学号什么课都不选,由于是内联接,->在这里查不出来
--还有,一个学号即使选了C2,只是这条记录被去掉了,选了其它课->这个学生仍能查出来