Anti-Join
LEFT JOIN + IS NULL
A에는 있지만 B에는 없는 행을 찾는 패턴입니다. 오른쪽의 PK 또는 NOT NULL 컬럼으로 NULL을 확인해야 합니다.
보존되는 행
매칭되는 행
NULL로 채워진 값
LEFT JOIN
모든 회원 보존
주문이 있든 없든 users 행은 먼저 결과에 남습니다.
→
NULL 생성
주문 없는 회원 표시
orders에 매칭이 없으면 o.order_id가 NULL이 됩니다.
→
WHERE
NULL만 선택
WHERE o.order_id IS NULL로 미매칭 행만 남깁니다.
SELECT u.username FROM users u LEFT JOIN orders o ON u.user_id = o.user_id WHERE o.order_id IS NULL;
회원
order_id
결과
김철수
1
제거
박민수
NULL
선택