IT
exists
yujinshin
2016. 7. 19. 16:54
출처:http://dedup.me/blog/?p=27
자료의 존재여부를 조건으로 사용하기 위하여는 EXISTS를 사용합니다.
[NOT] EXISTS (SELECT 문) | SELECT문을 사용한 서브쿼리의 결과 행이 1행이상 존재할때 TRUE로 간주합니다. |
IN을 사용할때 보다, EXISTS를 사용하는 편이 성능을 크게 향상될 때가 있으므로 IN을
사용할 때에는 EXISTS로 대체 할수 있는지 검토합니다.
emp테이블
SQL> select * from emp; EMP DEP NAME SALARY SQL> |
dept테이블
SQL> select * from dept; DEP DEPT_NAME |
emp테이블의 열dept_id가 ‘D03′인 자료가 있으면 테이블을 검색함.(EXISTS)
SQL> select * from dept 2 where exists( select ‘X’ from emp where dept_id = ‘D03′ ); ->검색결과가 없음. |
위의 X는 EXISTS를 사용할때의 관례.
emp테이블의 열dept_id가’D03′인 자료가 있으면 dept테이블을 검색함.(NOT EXISTS)
SQL> select * from dept 2 where not exists( select ‘X’ from emp where dept_id = ‘D03′ ); DEP DEPT_NAME |
dept테이블의 열 dept_id의 자료가 emp테이블의 열dept_id에 있는 자료를 검색.(EXISTS)
SQL> select * from dept A 2 where exists( select ‘X’ from emp B where A.dept_id = B.dept_id ); DEP DEPT_NAME |
dept테이블의 열 dept_id의 자료가 emp테이블의 열dept_id에 없는 자료를 검색.(EXISTS)
SQL> select * from dept A 2 where not exists( select ‘X’ from emp B where A.dept_id = B.dept_id ); DEP DEPT_NAME |