⚙️ 개발/MySQL

INNSER JOIN, OUTER JOIN

지구용사 2024. 5. 9. 15:17

이제 더는 물러설 수 없는 순간이라 INNER JOIN과 OUTER JOIN을 확실히 정리할려한다.

 

기본 MEMBER 테이블을 조회한 값이다.

SELECT
	A.USER_NO
FROM
	TB_MEMBER A
ORDER BY USER_NO
LIMIT 10;

 

TB_MEMBER와 TB_CAMPAIGN의 공통을 뽑아내기 위해 INNER JOIN을 한다.

SELECT
	A.USER_NO,
	B.AD_CAMPAIGN_NO
FROM
	TB_MEMBER A
	INNER JOIN TB_AD_CAMPAIGN B
	ON A.USER_NO = B.USER_NO
ORDER BY USER_NO
LIMIT 10;

 

둘이 겹치는 데이터만 조회하기에 TB_AD_CAMPAIGN에 데이터가 없는 TB_MEMBER 데이터는 조회되지 않는다.

그리고 하나의 USER_NO에 해당하는 AD_CAMPAIGN_NO가 여러개 나오는 것을 확인할 수 있다.

 

TB_MEMBER 기점으로 LEFT OUTER JOIN을 한다.

SELECT
	A.USER_NO,
	B.AD_CAMPAIGN_NO
FROM
	tb_member A
	LEFT OUTER JOIN tb_ad_campaign B
	ON A.USER_NO = B.USER_NO
ORDER BY USER_NO
LIMIT 10;

 

왼쪽 테이블인 TB_MEMBER를 기준으로 조회하기 때문에 조인한 테이블에 데이터가 없는 경우 NULL처리된다.

따라서 TB_MEMBER의 데이터는 조건이 맞으면 모두 조회한다.

 

조인하는 TB_AD_CAMPAIGN 기준으로 RIGHT OUTER JOIN을 한다.

SELECT
	A.USER_NO,
	B.AD_CAMPAIGN_NO
FROM
	tb_member A
	RIGHT OUTER JOIN tb_ad_campaign B
	ON A.USER_NO = B.USER_NO
ORDER BY USER_NO
LIMIT 10;

 

조인하는 테이블인 TB_AD_CAMPAIGN을 기준으로 조인하기 때문에 TB_MEMBER에 데이터가 없는 경우 조회하지 않는다.

따라서 TB_AD_CAMPAIGN 의 데이터는 조건이 맞으면 모두 조회한다.