Oracle IN vs存在差异?

时间:2012-10-15 12:49:29

标签: sql oracle

我对oracle INEXISTS感到困惑。我有以下要求。

我需要让所有名字都在的员工 -

select * from emp where ename in('smith','brown','john','johnson');

我可以在这里使用EXISTS吗? IN子句也有1000个限制。 EXISTS是否也有这样的限制?

谢谢!

2 个答案:

答案 0 :(得分:2)

简单地说,EXISTS通常用于检查符合条件的行是否存在于另一个(或相同的)表中。

使用EXISTS的SQL看起来像这样:

select *
from   emp e
where  exists(select * from emp e2 where e.empno = e2.empno and e2.ename in ('smith', 'brown', 'john', 'johnson'))

所以你可以看到它不是你需要的

答案 1 :(得分:2)

IN选择匹配值列表。 EXISTS返回布尔值,如true或false。存在比在中更快。

实施例

select ename from emp e where mgr in(select empno from emp where ename='KING');

EXISTS

select ename from emp e 
  where exists (select 1 from emp where e.mgr = empno and ename = 'KING');