Back-end Skill/DataBase

SQL 예제를 통한 LEFT JOIN에 대해 알아보기

Sophie소피 2022. 6. 28. 19:13

틱택토 게임 프로젝트 기능 중 사용자 정보와 승패전적을

함께 업데이트해야하는 페이지가 있다.

이 때 나는 게임회원정보를 담고있는 테이블과 승패전적을 담고있는 테이블의

PK를 조인하여 아래와 같이 내 정보에서 내 아이디와 승패 전적을 띄우는데 성공하였다.

 

 

 

여기서 예제를 알아보기 전에 Join에 대해 알아보자 

JOIN이란?

검색하고 싶은 컬럼이 다른 테이블에 있을 경우 사용하며 여러개의 테이블을 하나의

테이블인 것처럼 활용하는 것이다.

보통 Primary key 혹은 Foreign key로 두 테이블 연결하여 사용한다.

 

left outer join, left join

왼쪽 테이블 기준으로 join한다.

기준 테이블의 결과 + 기준 테이블의 중복값을 보여준다.

 

//LEFT OUTER JOIN 
SELECT 
	A.컬럼 
	B.컬럼
FROM 
	기존테이블A LEFT OUTER JOIN 조인테이블B 
ON A. 기준키 = B.기준키 

//LEFT join 
SELECT 
	A.컬럼 
	B.컬럼
FROM 
	기존테이블A LEFT JOIN 조인테이블B 
ON A. 기준키 = B.기준키 

 

<select id="ranking" resultType="hashmap">
        <![CDATA[
            select a.userid, a.total, a.win, a.lose, a.ranking, g.playername
            from (select userid, total, win, lose, dense_rank() over (order by win desc , total desc) as ranking
                  from user_record_kde) a
                 left join game_user_kde g on (a.userid = g.userid)
            where a.ranking <= 4;
        ]]>
    </select>

 두 테이블의 PK인 userid를 left조인하여 위와 같은 결과를 출력하였다,