DB/Oracle

[Oracle] EXISTS 란?

junnnhhh 2025. 10. 16. 20:30
728x90

이슈)

쿼리를 보다 보면, EXISTS 구문이 있다.

말 그래도 존재 여부를 따지는 문법인데, 가끔 보면 이상하게 정리가 안될 때가 있다.

그래서 한번 정리를 해본다.

 

EXISTS란?

→ 서브쿼리의 결과 존재 여부를 판단하여 메인 쿼리의 결과를 제어하는 조건문

→ 즉, EXISTS는 서브쿼리의 결과가 하나라도 있으면 TRUE 없으면 FALSE를 반환

※ NOT EXISTS → 반대로 존재하지 않는 경우만 찾을 때 사용

SELECT 컬럼명
FROM 테이블A A
WHERE EXISTS (
    SELECT 1
    FROM 테이블B B
    WHERE B.컬럼 = A.컬럼
);

 

이렇게 보면 IN과 EXISTS가 비슷하다고 볼 수 있는데, 아래 차이를 봐보자

구분  EXISTS  IN
비교 기준 존재 여부 값 목록 포함 여부
성능 서브쿼리 결과가 많아도, 첫 행을 찾으면 종료 → 큰 데이터에서 유리 서브쿼리 결과 전체를 비교해야 함
NULL 영향 NULL 관계없이 잘 동작 서브쿼리 결과에 NULL 있으면 주의 필요
728x90