select Sname from student
where NOT exists
(select * from course
where NOT exists
(select * from SC where
Sno = student.sno and cno = Course.Cno))
通俗一点讲下吧!
这个问题有没有其他解法?小生实在想不出了……谢谢!
[ 本帖最后由 张鑫 于 2011-07-26 01:06 编辑 ]作者: 匿名 时间: 2011-7-26 11:59
exists是用来判断是否存在的,当exists(查询)中的查询存在结果时则返回真,否则返回假。not exists则相反。
exists做为where 条件时,是先对where 前的主查询询进行查询,然后用主查询的结果一个一个的代入exists的查询进行判断,如果为真则输出当前这一条主查询的结果,否则不输出。作者: 匿名 时间: 2011-7-26 12:03
EXISTS 是判断是否存在,和in类似,但效率要比in高[code=sql]SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND EXISTS (SELECT ‘X' FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO AND LOC = ‘MELB')
SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND DEPTNO IN(SELECT DEPTNO FROM DEPT WHERE LOC = ‘MELB')[/code]他们的结果一样作者: 匿名 时间: 2011-7-26 12:40
…………………………作者: 匿名 时间: 2011-7-26 14:27
求不用exists的解法!