MySQL의 RIGHT JOIN(오른쪽 조인)은 LEFT JOIN과 작동 방식이 매우 유사하지만, 두 테이블을 처리하는 순서가 반대라는 점이 핵심 차이입니다. RIGHT JOIN을 사용하면 오른쪽 테이블의 모든 행이 결과 집합에 반드시 포함됩니다. 만약 오른쪽 테이블의 특정 행이 왼쪽 테이블에서 일치하는 행을 찾지 못하면, 결과에서 왼쪽 테이블에 해당하는 컬럼들은 NULL 값으로 채워집니다.
예제용 샘플 데이터 준비
RIGHT JOIN의 동작 원리를 쉽게 이해하기 위해, 다음과 같은 데이터를 가진 두 개의 테이블 tbl_1과 tbl_2를 예로 들어 살펴보겠습니다.
mysql> Select * from tbl_1; +----+--------+ | Id | Name | +----+--------+ | 1 | Gaurav | | 2 | Rahul | | 3 | Raman | | 4 | Aarav | +----+--------+ 4 rows in set (0.00 sec) mysql> Select * from tbl_2; +----+---------+ | Id | Name | +----+---------+ | A | Aarav | | B | Mohan | | C | Jai | | D | Harshit | +----+---------+ 4 rows in set (0.00 sec)
두 테이블에는 각각 4개의 행이 있으며, 공통으로 사용할 수 있는 컬럼은 Name입니다. 여기서 'Aarav'라는 이름만 양쪽 테이블에 동시에 존재합니다.
RIGHT JOIN 쿼리 작성하기
이제 위의 두 테이블을 RIGHT JOIN으로 연결하는 쿼리는 다음과 같이 작성할 수 있습니다.
mysql> SELECT tbl_1.id, tbl_2.id FROM tbl_1 RIGHT JOIN tbl_2 ON tbl_1.name = tbl_2.name; +------+----+ | id | id | +------+----+ | 4 | A | | NULL | B | | NULL | C | | NULL | D | +------+----+ 4 rows in set (0.00 sec)
결과 분석
실행 결과를 자세히 살펴보면 RIGHT JOIN의 특징을 명확하게 확인할 수 있습니다.
- 오른쪽 테이블(tbl_2)의 모든 행이 결과에 포함되었습니다. 즉, A, B, C, D 네 개의 행이 모두 조회되었습니다.
- 이름이 'Aarav'로 서로 일치하는 행만 왼쪽 테이블(tbl_1)의 id 값인 4를 반환했습니다.
- 'Mohan', 'Jai', 'Harshit'는 왼쪽 테이블에 일치하는 이름이 없기 때문에, 왼쪽 테이블의 id 컬럼이 NULL로 표시되었습니다.
정리하자면, RIGHT JOIN은 기준이 되는 오른쪽 테이블의 데이터를 절대 누락하지 않으면서 왼쪽 테이블과의 일치 여부를 함께 확인해야 하는 상황에서 유용합니다. 만약 실무에서는 가독성을 위해 LEFT JOIN으로 방향만 바꿔 작성하는 경우도 많으니, 상황에 맞게 활용하시기 바랍니다.