Algorithms in Python/Programmers - SQL ⭐️

없어진 기록 찾기

cat_no2 2024. 9. 25. 20:12

 

-- USING OUTER JOIN 
SELECT o.ANIMAL_ID, o.NAME 
FROM ANIMAL_INS AS i 
RIGHT OUTER JOIN ANIMAL_OUTS AS o
ON i.ANIMAL_ID = o.ANIMAL_ID 
WHERE i.ANIMAL_ID is null 
ORDER BY o.ANIMAL_ID
-- USING NOT EXIST 
SELECT o.ANIMAL_ID, o.NAME 
FROM ANIMAL_OUTS AS o 
WHERE NOT EXISTS (SELECT 1 FROM ANIMAL_INS AS i 
                 WHERE i.ANIMAL_ID = o.ANIMAL_ID) 
ORDER BY o.ANIMAL_ID

 

prompt 이해하기 - OUTS 에는 있지만 INS에는 존재 하지 않는 ID를 찾아 리턴. 

ANIMAL_OUTS 테이블에서 ANIMAL_INS에 ID가 없다면 데이터가 유실 된 것이고 RIGHT OUTER JOIN (INS JOIN OUTS) 하였을때 INS에는 없는 ID는 null 결과를 가질것이므로. 조건문에 i.ANIMAL_ID is null 을 넣어주면 된다. OUTS 테이블에 있는 ID를 찾는것이므로, 조회문에 i.ANIMAL_ID, i.NAME 이 아닌 o.ANIMAL_ID, o.NAME 이어야 한다.