복붙노트

[SQL] 오라클 대에는 차이가 존재?

SQL

오라클 대에는 차이가 존재?

나는 오라클 IN과 혼동하고 EXISTS하고있다. 내가 요구 사항을 아래에 있습니다.

나는 이름이 인 - 모든 직원을 얻을 필요

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

내가 사용할 수 있습니다 여기 EXISTS? 또한 절 1000 제한이 있습니다. 합니까 또한 그러한 제한이 EXISTS?

감사!

해결법

  1. ==============================

    1.IN은 매칭 값 목록을 픽업. 참 또는 거짓 같은 반환 부울 ​​값을 존재한다. 존재 빨리보다입니다.

    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'); 
    
  2. ==============================

    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'))
    

    그래서 당신은 당신이 여기에서 필요로하는 게 아니에요 볼 수 있습니다

  3. from https://stackoverflow.com/questions/12896007/oracle-in-vs-exists-difference by cc-by-sa and MIT license