标题: 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