SQL

[프로그래머스 SQL KIT] JOIN #3 - 없어진 기록 찾기

enayoiii 2025. 1. 25. 01:33

이번 유형은 제가 이전에 적었던 LEFT OUTER JOIN과 관련된 문제와 같은 유형입니다.

2025.01.25 - [SQL] - [프로그래머스 SQL KIT] JOIN #2- 오랜기간 보호한 동물(1)

 

[프로그래머스 SQL KIT] JOIN #2- 오랜기간 보호한 동물(1)

프로그래머스 문제 보러가기 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명보호소에 들어온 동물 테이블 AN

enayoiii.tistory.com

 

프로그래머스 문제 보러가기 

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

문제 설명

이 문제는 보호소에서 입양 보낸 기록은 있지만 보호소에 들어온 기록이 유실된 동물을 순차적으로 조회하는 문제입니다.

 

SOL 1) 서브 쿼리로 해결하기

SELECT ANIMAL_ID, NAME
FROM ANIMAL_OUTS
WHERE ANIMAL_ID NOT IN (SELECT ANIMAL_ID FROM ANIMAL_INS)
ORDER BY ANIMAL_ID;

이번에도 저는 NOT IN을 이용해서 풀었습니다. 개인적으로는 가장 가독성이 좋다고 생각합니다. 

이 문제도 이전과 같이 JOIN을 이용해서 풀 수 있습니다.

ON을 기준으로 테이블을 어디에 놓느냐에 따라 LEFT JOIN을 사용할 지, RIGHT JOIN을 사용할지만 갈릴 뿐입니다.

지난번에는 LEFT JOIN을 사용했으니 이번에는 RIGHT JOIN을 사용해서 풀어보도록 하겠습니다.

 

 

SOL 2) RIGHT (OUTER) JOIN

SELECT O.ANIMAL_ID, O.NAME
FROM ANIMAL_INS I
RIGHT OUTER JOIN ANIMAL_OUTS O ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE I.ANIMAL_ID IS NULL
ORDER BY ANIMAL_ID;

 

이번에는 RIGHT OUTER JOIN을 이용해서 풀어봤습니다. 솔직히 이렇게 까지 풀 이유가 없는 문제라고는 생각이 들긴 하는데요, 

이렇게 JOIN하게 되면 ANIMAL_OUTS 영역에서 ANIMAL_INS와의 교집합인 부분만 제거된 영역이 선택된다고만 이해하시면 될 것 같습니다.

 

 

 

 

let textNodes = document.querySelectorAll("div.tt_article_useless_p_margin.contents_style > *:not(figure):not(pre)"); textNodes.forEach(function(a) { a.innerHTML = a.innerHTML.replace(/`(.*?)`/g, '$1'); });