14

我对 oracleINEXISTS. 我有以下要求。

我需要找到所有姓名在-

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

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

谢谢!

4

2 回答 2

3

IN选择匹配值的列表。EXISTS返回布尔值,如 true 或 false。Exists 比 in 快。

例子

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

存在

select ename from emp e 
  where exists (select 1 from emp where e.mgr = empno and ename = 'KING'); 
于 2014-01-04T04:02:00.840 回答
2

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

您的 SQL 使用EXISTS如下所示:

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

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

于 2012-10-15T12:53:44.177 回答