Compare
Anti-Join 3가지 선택지
LEFT JOIN + IS NULL, NOT EXISTS, NOT IN은 비슷한 목적을 갖지만 NULL 처리와 가독성에서 차이가 납니다.
LEFT JOIN 패턴
NOT EXISTS
NOT IN NULL 함정
LEFT + NULL
결과를 눈으로 추적하기 쉬움
오른쪽의 PK/NOT NULL 컬럼을 검사하면 안전합니다.
NOT EXISTS
의도를 가장 직접 표현
상대 행이 존재하지 않는다는 조건이 명확합니다.
NOT IN
NULL 함정 주의
서브쿼리 결과에 NULL이 있으면 전체 비교가 UNKNOWN으로 흐를 수 있습니다.
방법
좋은 사용처
주의점
LEFT JOIN IS NULL
조인 결과를 같이 확인할 때
nullable 컬럼 검사 금지
NOT EXISTS
미존재 조건을 표현할 때
상관 조건 누락 주의
NOT IN
목록이 NULL 없음이 보장될 때
NULL 제거 조건 필요