1. [SQL] 없어진 기록 찾기
프로그래머스 [SQL] 없어진 기록 찾기
❌ 오답정리
SELECT o.animal_id, o.name
FROM animal_ins i RIGHT OUTER JOIN animal_outs o ON i.animal_id = o.animal_id
WHERE o.animal_id is not null AND i.animal_id is null;
ORDER BY o.animal_id;
✅ o.animal_id IS NOT NULL ← 불필요한 조건
- animal_outs o는 RIGHT OUTER JOIN에서 기준 테이블이므로 절대 NULL이 될 수 없다.
- 따라서 이 조건은 쓸 필요가 없다.
✅ RIGHT OUTER JOIN 사용 ← 동일 결과지만 덜 직관적
- 일반적으로 OUTER JOIN 할 때는 기준 테이블을 왼쪽에 놓는다.
- LEFT OUTER JOIN을 사용하는 것이 권장되기 때문이다.
- RIGHT OUTER JOIN은 해석이 어렵고 비추천되는 방식이라고 한다.
정답 코드
SELECT o.animal_id, o.name
FROM animal_outs o LEFT OUTER JOIN animal_ins i ON o.animal_id = i.animal_id
WHERE i.animal_id is null
ORDER BY o.animal_id;