본문 바로가기

Develop/Database & SQL

EXISTS / NOT EXISTS 기본 개념

1. EXISTS / NOT EXISTS 기본 개념

1) EXISTS

  • 서브쿼리 결과가 1건이라도 존재하면 TRUE
  • 즉,
  • "이 조건을 만족하는 데이터가 있냐?"

2) NOT EXISTS

  • 서브쿼리 결과가 1건도 없으면 TRUE
  • 즉,
  • "이 조건을 만족하는 데이터가 없냐?"

2. 비유로 더 쉽게 설명해 보기

당신이 어떤 이벤트에 참여했다고 가정하면:

A) NOT EXISTS

"어제 응모 명단을 확인했는데, 당신 이름이 없다"

=> 어제 응모 안 했네? 정상 처리.

B) EXISTS

"어제 응모 명단에 당신이 있다"

그 중에서도 win_yn='Y'이면

"당첨된 기록이 있네? 정상 처리."

win_yn='N'이면

"꽝이었네? 그럼 오늘 양말 응모했는지 더 확인해 보자."

이렇게 단계적으로 체크합니다.

 

3. 왜 EXISTS / NOT EXISTS 를 쓰나?

  • SELECT COUNT(*)보다 빠르고 최적화가 잘 되어 있음
  • 조건을 만족하는 row를 1건 찾으면 즉시 TRUE/FALSE를 결정하므로 효율적
  • 특히 PK/Index가 있는 테이블 조회에 매우 적합

 

4. 결론 (아주 간단 요약)

문장의미
EXISTS (서브쿼리) 그 조건의 데이터가 있다
NOT EXISTS (서브쿼리) 그 조건의 데이터가 없다

현재 쿼리는
전날 응모했는지 / 당첨인지 / 꽝이면 오늘 다시 응모했는지
이 세 가지 케이스를 EXISTS / NOT EXISTS 조합으로 체크하는 구조입니다.