Language/SQL

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

공부좀하시졍 2022. 7. 5. 11:31

SELECT ANIMAL_ID, NAME
FROM ANIMAL_OUTS
where ANIMAL_ID not in
    (select ANIMAL_ID from ANIMAL_INS);

위 코드는 내 생각대로 작성한 코드이다.

ANIMAL_OUTS 테이블에는 값이 있고 ANIMAL_IN 테이블에는 값이 없어야 하므로 차집합을 생각했다.

검색해보니, mysql에는 차집합 연산이 없어 서브쿼리로 진행해야 한다고 한다.

 

위 코드는, ANIMAL_OUTS의 ANIMAL_ID 중 ANIMAL_INS의 ANIMAL_ID와 겹치지 않는 (없는) 값들을 조회하도록 했다. 

 

[실행결과]

 

다음은, 구글링 후 JOIN 연산자를 사용하여 문제를 해결한 코드다.

INNER JOIN LEFT OUTER JOIN이 많이 쓰인다고 한다.

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

ANIMAL_OUTS 테이블에만 존재해야 하므로 JOIN 후 결과 테이블의

ANIMAL_INS의 ANIMAL_ID값은 NULL일 것이다. (LEFT OUTER JOIN 결과)