黑马程序员技术交流社区

标题: sql语句迷惑 [打印本页]

作者: 范明正    时间: 2011-8-25 14:37
标题: sql语句迷惑
not in 和 NOT exists的区别是什么啊,始终闹不懂这两个,谁能解释一下。
网上有的说:IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。
我还是不太明白。
[ 本帖最后由 范明正 于 2011-08-25  14:40 编辑 ]
作者: 匿名    时间: 2011-8-25 14:42
not in的效率高
作者: 匿名    时间: 2011-8-25 15:09
not in用于子查询 后面跟着一个集合,并且肯能返回多条查询记录
not exists只是返回一个布尔值

我举2个例子给你看 你看明白了  就懂他们的含义了
select  * from foodInfo where foodid not in(01,02)//意思是查询foodInfo表中除了foodID为01,02的其他食物

select * from foodInfo where  not exists(select  foodid  from foodInfo where foodName='榴莲')//意思是查询foodInfo表中的所有食物.但是前提是表中不存在榴莲,如果存在,返回结果为空
作者: 匿名    时间: 2011-8-26 19:31
名字命名也不是白命的,从这个not in not exists也能体会出来
判断一个表是否存在,就不适合用not in,判断某个元素是否存在某个集合中就不适合用not exists




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2