黑马程序员技术交流社区
标题:
SQL中的exists
[打印本页]
作者:
张鑫
时间:
2011-7-25 20:02
标题:
SQL中的exists
SQL中的exists我至今不理解怎么用啊!
不要简单地说表示结果是否存在,这样太抽象了!
比如那个经典例子——查询选修了全部课程的学生信息!
有Student , Course , SC 这三个表!
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 13:36
标题:
回复 楼主 的帖子
这问题我感觉没什么必要纠结的。。。逻辑很简单啊,子查询判断条件,exists筛选出存在或者不存在的数据。一条一条语句分析就简单了
作者:
匿名
时间:
2011-7-26 14:27
求不用exists的解法!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2