프로그래머스 - SQL1
ANIMAL_INS 테이블과 ANIMAL_OUTS 테이블을 비교해
ANIMAL_INS 테이블에는 없고 ANIMAL_OUTS 테이블에만 있는 컬럼 출력
select a.animal_id, a.name
from animal_outs a
left outer join animal_ins b
on a.animal_id = b.animal_id
where a.animal_id not in (
select animal_id
from animal_ins);
풀이 방법
- left outer join을 사용해 animal_outs와 animal_ins를 join (animal_outs에는 있지만 animal_ins에는 없는
칼럼까지 모두 출력)
- not in 조건을 사용해 출력한 칼럼들과 animal_ins 테이블을 비교해 animal_ins에는 없는 칼럼들만 출력
사용 개념
- LEFT OUTER JOIN
-> OUTER JOIN은 조인 조건에서 동일한 값이 없는 행도 반환할때 사용
-> LEFT, RIGHT OUTER JOIN은 기준이 되는 테이블이 조인 수행 시 드라이빙 테이블 된다
(적은 양의 데이터를 추출하는 테이블을 드라이빙 테이블로 설정하는것이 유리)
-> SELECT * FROM table1
LEFT OUTER JOIN table2
ON table1.key = table2.key;
- NOT IN
-> 일치하지 않는 컬럼들을 출력
-> SELECT *FROM table1
WHERE table1.key NOT IN (
SELECT table2.key
FROM table2);
-> 비교 대상에 NULL 값 포함 시 UNKNOWN 값 반환 (비교 X)
(NOT EXISTS는 NULL 비교 시 NULL 반환)
'DB' 카테고리의 다른 글
[ORACLE] SQL SELECT 칼럼 가로로 합쳐서 조회 (0) | 2022.08.17 |
---|---|
SQL 5장 정리 (0) | 2019.10.11 |
SQL 4장 정리 (0) | 2019.10.11 |