我对 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'))
所以你可以看到这不是你需要的