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은 단순 연결이 아닌, 데이터 흐름을 설계하는 핵심 입니다.
실무에서는 항상 결과를 예측하며 쿼리를 작성하는 습관을 들입시다.
'IT > SQL' 카테고리의 다른 글
🔎 서브쿼리 없이 조건만 추출? – EXISTS 패턴 실무 활용법 (0) | 2025.05.14 |
---|---|
📄 WITH 절은 서브쿼리보다 더 강력하다 (0) | 2025.05.13 |
🧩 CASE WHEN이 필터링에도 쓰인다고요? (0) | 2025.05.11 |
❓ WHERE 절이 있는데 조건이 왜 안 먹히나요? (0) | 2025.05.11 |
📌 SQL 입문자가 자주 실수 할 만한 SELECT 문 3가지 패턴 (0) | 2025.05.11 |