[JOIN] 없어진 기록 찾기 ⭐⭐⭐
카테고리: Programmers SQL
태그: DB SQL Coding Test
MySQL로 풀이했습니다.
출처 : 프로그래머스 https://programmers.co.kr/learn/challenges
📌 없어진 기록 찾기
난이도 ⭐⭐⭐
🚀 문제
🚀 내 풀이 ⭕
천재지변으로 인해 일부 데이터가 유실되었습니다. 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요.
SELECT O.ANIMAL_ID, O.NAME
FROM ANIMAL_INS I RIGHT JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE I.ANIMAL_ID IS NULL
ORDER BY O.ANIMAL_ID
- JOIN 은 여러 테이블의 데이터를 한 번에 검색할 수 있게 해준다. 두 테이블을 연결하는 것이기 때문에 두 테이블이 공통으로 가지고 있는 열이 있어야 한다. 즉, 외래키가 있어야 한다.
- INNER JOIN : 교집합
- OUTER JOIN : 합집합
- LEFT JOIN : 왼쪽 테이블 전체와 오른쪽 테이블은 두 외래키 값이 같은 결과만 리턴 (따라서 오른쪽 테이블은 NULL 이 포함될 수 있음)
- RIGHT jOIN : 오른쪽 테이블 전체와 왼쪽 테이블은 두 외래키 값이 같은 결과만 리턴 (따라서 왼쪽 테이블은 NULL 이 포함될 수 있음)
두 테이블의 ANIMAL_ID
외래키를 기준으로 I
테이블(보호소 들어왔을 때)과 O
테이블(입양 갔을 때) 을 JOIN 한다. RIGHT JOIN 했기 때문에 JOIN 한 결과는 O
테이블의 ANIMAL_ID
값은 NULL 이 있을 수 없고(입양 간 기록은 반드시 있음) I
테이블의 ANIMAL_ID
값엔 NULL 이 포함될 수 있다.(보호소 기록이 없는, 즉 아이디가 없는 행이 있을 수 있음) 이렇게 JOIN 한 결과에서 I
테이블의 ANIMAL_ID
가 NULL 인 것을 찾는다.
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기