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
선택