테이블 index
ANIMAL_INS
NAME | TYPE | NULLABLE |
ANIMAL_ID | VARCHAR(N) | FALSE |
ANIMAL_TYPE | VARCHAR(N) | FALSE |
DATETIME | DATETIME | FALSE |
INTAKE_CONDITION | VARCHAR(N) | FALSE |
NAME | VARCHAR(N) | TRUE |
SEX_UPON_INTAKE | VARCHAR(N) | FALSE |
ANIMAL_OUTS
NAME | TYPE | NULLABLE |
ANIMAL_ID | VARCHAR(N) | FALSE |
ANIMAL_TYPE | VARCHAR(N) | FALSE |
DATETIME | DATETIME | FALSE |
NAME | VARCHAR(N) | TRUE |
SEX_UPON_OUTCOME | VARCHAR(N) | FALSE |
문제
천재지변으로 인해 일부 데이터가 유실되었습니다. 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요.
예시

풀이
소실된 데이터를 찾기 위해서는
OUTS에는 있고, INS에는 없는 데이터를 찾아야 한다. 그렇기 때문에 Inner Join을 사용하게 조건에 일치하는 데이터만 가져오기 때문에 outer join을 사용해야한다.SELECT *
from ANIMAL_INS a right outer JOIN ANIMAL_OUTS b
ON a.ANIMAL_ID = b.ANIMAL_IDjoin을 하고, where절에서 INS의 데이터가 null 인 경우만 출력하면 된다.SELECT b.ANIMAL_ID, b.NAME
from ANIMAL_INS a right outer JOIN ANIMAL_OUTS b
ON a.ANIMAL_ID = b.ANIMAL_ID
where a.animal_id is null

Share article