SQL语句中 in和exist区别

[复制链接]
查看11 | 回复4 | 2017-11-28 23:38:19 | 显示全部楼层 |阅读模式
本文主要分析了in和exists的区别与执行效率的问题: in可以分为三类: 1、形如select * from t1 where f1 in ( 'a ', 'b '),应该和以下两种比较效率。 select * from t1 where f1= 'a ' or f1= 'b '或者 select * from t1 where f1 = 'a ' union all select * from t1 f1= 'b '你可能指的不是这一类,这里不做讨论。 2、形如 selec...
回复

使用道具 举报

千问 | 2017-11-28 23:38:19 | 显示全部楼层
in 和 exists也是很好区别的.in 是一个集合运算符.a in {a,c,d,s,d....}这个运算中,前面是一个元素,后面是一个集合,集合中的元素类型是和前面的元素一样的. 而exists是一个存在判断,如果后面的查询中有结果,则exists为真,否则为假.in 运算用在语句中,它后面带的select 一定...
回复

使用道具 举报

千问 | 2017-11-28 23:38:19 | 显示全部楼层
IN 确定给定的值是否与子查询或列表中的值相匹配。 EXISTS 指定一个子查询,检测行的存在。 比较使用 EXISTS 和 IN 的查询这个例子比较了两个语义类似的查询。第一个查询使用 EXISTS 而第二个查询使用 IN。...
回复

使用道具 举报

千问 | 2017-11-28 23:38:19 | 显示全部楼层
一些带EXISTS或NOT EXISTS谓词的子查询不能被其他形式的子查询等价替换,但所有带IN谓词、比较运算符、ANY和ALL谓词的子查询都能用带EXISTS谓词的子查询等价替换一般SQL语句中EXISTS用得比较少...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行