A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 范明正 黑马帝   /  2011-8-25 14:37  /  2060 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

not in 和 NOT exists的区别是什么啊,始终闹不懂这两个,谁能解释一下。
网上有的说:IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。
我还是不太明白。
[ 本帖最后由 范明正 于 2011-08-25  14:40 编辑 ]

3 个回复

倒序浏览
黑马网友  发表于 2011-8-25 14:42:55
沙发
not in的效率高
回复 使用道具 举报
黑马网友  发表于 2011-8-25 15:09:30
藤椅
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表中的所有食物.但是前提是表中不存在榴莲,如果存在,返回结果为空

评分

参与人数 1技术分 +2 收起 理由
wangfayin + 2 回答的不错!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-8-26 19:31:30
板凳
名字命名也不是白命的,从这个not in not exists也能体会出来
判断一个表是否存在,就不适合用not in,判断某个元素是否存在某个集合中就不适合用not exists
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马