DB/mysql

left, right join 이란?

STUFIT 2023. 11. 21. 11:48
반응형

left join과 right join은 mysql에서 자주 사용되는 조인 방식이다. 이 두 조인 방식은 어떻게 데이터가 병합되는지에 따라 다르게 사용되는데 아래에서 예제와 함께 설명하겠습니다.

<예제 데이터>

- 유저 테이블

userId userName
1 철수
2 영희
3 영지

- order 테이블

orderId userId product
101 1 플스5
102 2 닌텐도

1. left join

: left join 은 주로 왼쪽 테이블의 모든 레코드와 오른쪽 테이블에서 매칭되는 레코드를 반환한다. 오른쪽 테이블에 매칭되는 레코드가 없는 경우에는 해당 레코드에 대해 null 값을 반환한다.

: 위의 예제테이블에서 left join을 한다면 쿼리와 결과값은 다음과 같습니다.

1) 쿼리

SELECT users.userId, userName, product
FROM users
LEFT JOIN orders ON users.userId = orders.userId;

2) 결과

userId userName product
1 철수 플스5
2 영희 닌텐도
3 영지 null

2. right join

: right join은 주로 오른쪽 테이블의 모든 레코드와 왼쪽 테이블에서 매칭되는 레코드를 반환한다. 왼쪽 테이블에 매칭되는 레코드가 없을 시에는 해당 레코드에 대해 null을 반환한다.

: 위의 예제 테이블에서 right join을 한다면 쿼리와 결과값은 다음과 같습니다.

1) 쿼리

SELECT users.userId, userName, product
FROM users
RIGHT JOIN orders ON users.userId = orders.userId;

2) 결과

userId userName product
1 철수 플스5
2 영희 닌텐도

 

right join의 결과값은 orders 테이블에 있는 모든 레코드가 반환된다. users테이블에서 orders 테이블의 모든 userId와 매칭되는 레코드가 있기 때문에 null 값은 발생하지 않습니다.

3. 그렇다면 언제 left랑 right를 적절히 사용하는가?

1) left join 사용 사례

: 왼쪽 테이블의 모든 레코드를 포함하고 싶을 때, 특히 오른쪽 테이블에 매칭되지 않는 레코드까지 포함하고 싶을때 사용됩니다. 예를들어 모든 사용자와 그들의 주문을 보고 싶지만, 일부 사용자가 주문을 하지 않았을 수도 있는 경우에는 left join을 사용합니다.

2) right join 사용 사례

: 오른쪽 테이블의 모든 레코드를 포함하고 싶을 때, 특히 왼쪽 테이블에 매칭되지 않는 레코드까지 포함하고 싶을때 사용됩니다. left join과 동일한 결과를 원하지만, 쿼리를 작성할 때 테이블의 순서를 바꾸고 싶을 때 사용할 수 있습니다.

 

반응형