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 결과)
'Language > SQL' 카테고리의 다른 글
[프로그래머스] 오랜 기간 보호한 동물(1) (0) | 2022.07.05 |
---|---|
[프로그래머스] 있었는데요 없었습니다 (0) | 2022.07.05 |
[프로그래머스] NULL 처리하기 (0) | 2022.07.04 |
[프로그래머스] 이름이 있는 동물 아이디 (0) | 2022.07.04 |
[프로그래머스] 이름이 없는 동물의 아이디 (0) | 2022.07.04 |