欢迎各界计算机爱好者加入,弘扬极客精神!

sql exists 和 in 的区别

1 喜欢 0 不喜欢
如题,是在是不明白这两个东西,希望大神解析一下啊!
问题关闭原因: enough answers
最新提问 9月 15, 2015 分类:数据库 | 用户: Mac_时间找我喝咖啡 (2,062 分)  
已关闭 12月 7, 2016 用户:Re

27 个回答

2 喜欢 0 不喜欢
1.exist,not exist一般都是与子查询一起使用. In可以与子查询一起使用,也可以直接in (a,b.....)

2.exist会针对子查询的表使用索引. not exist会对主子查询都会使用索引. in与子查询一起使用的时候,只能针对主查询使用索引. not in则不会使用任何索引. 注意,一直以来认为exists比in效率高的说法是不准确的。
最新回答 9月 27, 2015 用户: MaJinjian (4,036 分)  
0 喜欢 0 不喜欢
in 和 exists最主要的区别就是对null处理, 如果没有null值,in 和 exists是等同的。如果不等同,说明查询的内容里有null值。
最新回答 9月 28, 2015 用户: 接吻能补钙 (2,100 分)  
3 喜欢 0 不喜欢
in 和 exists主要区别就是对null处理 如果没有null值,in 和 exists是等同的。如果不等同,说明查询的内容里有null值。 请仔细分析下面四个例子就知道了。 select 1 where 2 in (1,null) select 1 where 2 not in (1,null) select 1 where exists(select null) select 1 where not exists(select null)
最新回答 9月 29, 2015 用户: 黑夜流星雨 (2,078 分)  
0 喜欢 0 不喜欢
我的理解exists只是返回TRUE或者FALSE。 如果没有null值,in 和 exists是等同的。如果不等同,说明查询的内容里有null值。

 

最新回答 1月 28, 2016 用户: 教六先生 (6,108 分)  
0 喜欢 0 不喜欢

好像是Exists是存在判断,只要有其中一个存在就返回。
in是返回所有包含在in中的数据。

最新回答 9月 3, 2016 用户: xyxx (2,110 分)  
0 喜欢 0 不喜欢
1.exist,not exist一般都是与子查询一起使用. In可以与子查询一起使用,也可以直接in (a,b.....)。
2.exist会针对子查询的表使用索引. not exist会对主子查询都会使用索引. in与子查询一起使用的时候,只能针对主查询使用索引. not in则不会使用任何索引. 注意,一直以来认为exists比in效率高的说法是不准确的。
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。
最新回答 9月 3, 2016 用户: tenderness (3,894 分)  
0 喜欢 0 不喜欢
最新回答 12月 7, 2016 用户: Re (2,896 分)  
...