日期:2014-05-19  浏览次数:20505 次

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,只是这条记录被去掉了,选了其它课->这个学生仍能查出来