왼쪽 행은 모두 남긴다
LEFT JOIN은 오른쪽에 짝이 없어도 왼쪽 행을 보존하고, 없는 오른쪽 열을 NULL로 채워. 고객은 모두 보되 주문이 있는 경우에만 주문 정보를 붙이는 질의에 맞아.
없는 관계를 찾는 고전적인 모양
LEFT JOIN ... WHERE right.id IS NULL은 짝이 없는 행을 찾아. 주문이 0건인 사용자나 상품이 없는 범주를 찾을 때 유용해. 예를 들어 주문이 없는 사용자를 찾는 식이지.
ON과 WHERE의 위치가 결과를 바꿔
오른쪽 조건을 ON이 아니라 WHERE에 두면 NULL로 채운 행이 사라져 INNER JOIN처럼 변할 수 있어. 예를 들어 WHERE o.total > 100을 어디에 두는지 의식해야 해. 행 수를 셀 때도 COUNT(*)은 보존된 왼쪽 행까지 세지만 COUNT(o.id)는 실제로 짝이 있는 오른쪽 행만 세.