Search

[필수:정합]OUTER JOIN 기준집합 필터 위치 오류

BAD: 99,990 rows(99,989건 과다 조회)

기준집합 조건을 ON에 배치
SELECT t1.mbr_id ,t2.ord_no ,t2.ord_st FROM startdbpg.ms_mbr_big t1 LEFT OUTER JOIN startdbpg.tr_ord_big t2 ON (t2.mbr_id = t1.mbr_id AND t2.ord_st = 'PKUP' AND t2.ord_dtm >= '2025-01-25' AND t2.ord_dtm < '2025-01-26' AND t1.mbr_id = 'M01658' ) ;
SQL
복사
SQL 결과 보기
•
OUTER JOIN에서 기준집합의 필터 조건(t1.mbr_id = 'M01658')을 ON 절에 두면, 조건에 맞지 않는 회원도 결과에 남습니다. 예제에서는 전체 회원 99,990건이 조회됩니다.

GOOD: 1 rows(정상)

기준집합 조건을 WHERE에 배치
SELECT t1.mbr_id ,t2.ord_no ,t2.ord_st FROM startdbpg.ms_mbr_big t1 LEFT OUTER JOIN startdbpg.tr_ord_big t2 ON (t2.mbr_id = t1.mbr_id AND t2.ord_st = 'PKUP' AND t2.ord_dtm >= '2025-01-25' AND t2.ord_dtm < '2025-01-26' ) WHERE t1.mbr_id = 'M01658' ;
SQL
복사
SQL 결과 보기
•
OUTER JOIN에서 기준집합의 필터 조건은 WHERE절에 작성합니다. 예제에서는 M01658 회원 1건만 조회되며, 조건에 맞는 주문이 없어 주문 컬럼은 NULL로 표시됩니다.
💡

KEY POINT

•
LEFT OUTER JOIN에서 기준집합 자체를 선별하는 조건은 WHERE에 둡니다. ON에만 작성하면 조건에 맞지 않는 기준집합 행도 결과에 남을 수 있습니다.