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