I am confused with oracle IN and EXISTS. I have below requirement.
I need to get all the employees whose names are in-
sele
simply put, EXISTS is usually used for checking whether rows that meet a criteria exist in another (or the same) table.
your SQL using EXISTS would look like this:
select *
from emp e
where exists(select * from emp e2 where e.empno = e2.empno and e2.ename in ('smith', 'brown', 'john', 'johnson'))
so you can see it's not what you need here
IN picks the list of matching values. EXISTS returns the boolean values like true or false. Exists is faster than in.
Example
IN
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');