프로그래머스 - 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
TAGS.

Comments