[프로그래머스] 없어진 기록 찾기 - MySQL

Kim Ji Eun·2022년 3월 9일
0

난이도

레벨 3

유형

JOIN

문제

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

풀이

JOIN을 이용해 풀면 된다.
오랜만에 SQL을 해서 문법을 까먹었다.. 공부할 겸 풀이 참고했다.
주로 많이 쓰이는 것은 INNER JOIN 과 LEFT OUTER JOIN이다!
이 개념 숙지하도록!

LEFT OUTER JOIN

왼쪽에 오는 테이블을 기준으로 오른쪽에 오는 테이블과 비교하여 조건에 맞는 값이 있으면 가져오고 없으면 null 부여한다.
즉, 왼쪽 데이터는 무조건 갖고 오른쪽은 있으면 가져오고 없으면 null

문제 풀이

ANIMAL_OUTS에는 있는데 ANIMAL_INS에는 없는 동물의 ID와 이름을 조회해야 한다!
여기서 LEFT OUTER JOIN을 사용한다.

  1. ANIMAL_OUTS 데이터가 무조건 나오게 해야하므로 JOIN 왼쪽에 OUTS를 넣는다.
    FROM ANIMAL_OUTS OUTS (왼)
    LEFT OUTER JOIN ANIMAL_INS INS (오)
  2. ANIMAL_ID가 같은 것을 기준으로 LEFT OUTER JOIN하기
  3. INS.ANIMAL_ID가 null인 것을 출력한다. = OUTS에는 있지만 INS에는 없는 ID 값을 조회

코드

SELECT OUTS.ANIMAL_ID, OUTS.NAME
FROM ANIMAL_OUTS OUTS
LEFT OUTER JOIN ANIMAL_INS INS
ON OUTS.ANIMAL_ID = INS.ANIMAL_ID
WHERE INS.ANIMAL_ID IS NULL
ORDER BY OUTS.ANIMAL_ID;

https://chanhuiseok.github.io/posts/db-7/

profile
Back-End Developer

0개의 댓글