我对 oracleIN
和EXISTS
. 我有以下要求。
我需要找到所有姓名在-
select * from emp where ename in('smith','brown','john','johnson');
我可以在这里使用EXISTS
吗?AlsoIN
子句有 1000 个限制。EXISTS
也有这样的限制吗?
谢谢!
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');
简单地说,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'))
所以你可以看到这不是你需要的