3-2/DB

[프로그래머스][join][mysql]없어진 기록찾기(left join ,right join)

개발자 덕구🐾 2022. 2. 24. 07:48
728x90

https://programmers.co.kr/learn/courses/30/lessons/59042

 

코딩테스트 연습 - 없어진 기록 찾기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

 

 

 

 

 

outs테이블에는 있는데 ins테이블에는 존재하지않는 튜플들을 찾는 문제이다.

 

 

left join을 사용하면

select outs.animal_id, outs.name 
from animal_outs outs left join animal_ins ins on ins.animal_id = outs.animal_id 
where ins.animal_id is null

 

 

 

 

right join을 사용하면 

select outs.animal_id, outs.name 
from animal_ins ins right join animal_outs outs on ins.animal_id = outs.animal_id 
where ins.animal_id is null

 

 

설명 : 

 

 

from 다음에 테이블이 왼쪽으로, left join 이후의 테이블이 오른쪽으로 간다.

즉 outs 테이블이 왼쪽으로, ins테이블이 오른쪽에 위치한다.

 

 

left join은

여기서 left join이므로 왼쪽테이블(outs)를 기준으로 join된다.

outs에 없는 ins(오른쪽에 붙은 테이블)은 null값을 가지게 된다. 

그래서 where 조건으로 is null을 붙여준다.

 

 

right join은

여기서 right join이므로 오른쪽테이블(outs)를 기준으로 join된다.

outs에 없는 ins(왼쪽에 붙은 테이블)은 null값을 가지게 된다. 

그래서 where 조건으로 is null을 붙여준다.

 

 

 

 

 

반응형