연속 LEFT JOIN

한 번 보존된 NULL 행은 다음 LEFT JOIN에서도 제거되지 않고, 뒤쪽 컬럼까지 NULL로 이어집니다.

이 다이어그램의 핵심은 첫 번째 조인 결과 자체가 두 번째 조인의 입력이라는 점입니다. 주문이 없는 회원은 중간 결과에서 이미 살아남았기 때문에, 다음 LEFT JOIN에서도 그대로 전달됩니다.

시작 행

기준은 항상 users입니다.

회원 테이블에 있는 박민수 행이 기준이므로, 주문이 없어도 조인 체인에서 출발점 자체는 사라지지 않습니다.

기준 예시

username = 박민수
user_id 는 존재, 주문 정보는 아직 없음

1차 조인 결과

users LEFT JOIN orders가 먼저 NULL 행을 만듭니다.

주문이 없으므로 orders 쪽 매칭은 실패하지만, LEFT JOIN은 왼쪽 행을 보존합니다. 그래서 중간 결과에 order_id = NULL인 행이 남습니다.

중간 결과 박민수 | order_id = NULL
2차 조인 입력

다음 LEFT JOIN order_items도 그 NULL 행을 그대로 받습니다.

입력 키
order_id = NULL
매칭 시도
order_items 에서 연결할 주문상세를 찾을 수 없음
전파 결과
product_name = NULL
quantity = NULL
최종 반환 행

NULL이 뒤쪽 컬럼까지 확장된 상태로 결과가 반환됩니다.

아래처럼 박민수 행은 남아 있고, 주문과 주문상세에서 채울 값만 NULL로 표시됩니다.

username | order_id | product_name | quantity ---------|----------|--------------|--------- 김철수 | 1 | 노트북 | 1 김철수 | 2 | 마우스 | 2 이영희 | 3 | 키보드 | 1 박민수 | NULL | NULL | NULL
왜 INNER JOIN이 위험한가

같은 중간 행이라도 두 번째 조인 종류에 따라 결과가 갈립니다.

2차 LEFT
박민수 행 유지
매칭 실패만 NULL로 표시하고 행 자체는 남깁니다.
2차 INNER
박민수 행 제거
order_items 와 일치하는 주문이 없어서 중간 결과의 NULL 행이 탈락합니다.