본문 바로가기
IT/SQL

🔄 LEFT JOIN인데 데이터가 빠져요? – JOIN 실수 CASE

by 맘솔 2025. 5. 11.

 

LEFT JOIN은 기준 테이블의 데이터를 모두 보여주는 조인 방식입니다.

그런데 실무에서는 이걸 썼는데도 **데이터가 일부 누락되는 경우**가 꽤 자주 발생합니다.

 

이번 글에서는 실무에서 자주 발생하는 JOIN 누락 오류 2가지를 소개하고,

그 해결 방법도 함께 알아 보려합니다.

 

❶ WHERE 절에서 NULL 값을 잘못 필터링한 경우

다음 쿼리를 보면 LEFT JOIN을 썼지만, 결과는 INNER JOIN처럼 작동합니다.


SELECT a.emp_id, b.project_name
FROM employee a
LEFT JOIN project b ON a.emp_id = b.emp_id
WHERE b.project_name = 'AI 개발';
  

이 쿼리는 NULL을 포함한 결과를 필터링하고 있기 때문에,

결국 조인 실패한 행(=NULL)은 사라져버립니다.

▶ 해결 방법: 조건을 ON 절로 옮기면 해결됩니다.


SELECT a.emp_id, b.project_name
FROM employee a
LEFT JOIN project b 
  ON a.emp_id = b.emp_id AND b.project_name = 'AI 개발';
  

ON 절은 조인 조건, WHERE 절은 결과 필터 조건이라는 점을 반드시 구분해야 해요.

 

❷ JOIN 키가 NULL일 수 있는 경우

LEFT JOIN 키 자체가 NULL이면, 조인 자체가 성립되지 않습니다. 


SELECT a.user_id, b.coupon_code
FROM user a
LEFT JOIN coupon b ON a.coupon_id = b.id;
  

▶ 만약 a.coupon_id가 NULL이면, 조인 매칭이 되지 않아 b 정보가 누락됩니다.

해결 방법은 다음과 같습니다:

  • ✔ NULL 가능성 있는 JOIN 키는 사전에 COALESCE 등으로 대체
  • ✔ 아니면 JOIN 키가 필수인 테이블을 기준 테이블로 조정

 

✅ 정리 – JOIN은 위치와 흐름을 설계하는 기술

  • 조건을 WHERE 절에 쓰면 OUTER JOIN이 INNER로 바뀔 수 있다
  • JOIN 키의 NULL 여부는 항상 사전에 점검
  • 조건 위치 = 결과 흐름 결정

JOIN은 단순 연결이 아닌, 데이터 흐름을 설계하는 핵심 입니다.

실무에서는 항상 결과를 예측하며 쿼리를 작성하는 습관을 들입시다.