본문 바로가기

문돌이 존버/DB 및 SQL 스터디

(프로그래머스 SQL 문제 풀이) 없어진 기록 찾기

반응형

SELECT A.ANIMAL_ID, A.NAME FROM ANIMAL_OUTS AS A
LEFT JOIN ANIMAL_INS AS B
ON A.ANIMAL_ID = B.ANIMAL_ID # 합칠 때 기준이 되는 attribute
WHERE B.ANIMAL_ID IS NULL
ORDER BY B.ANIMAL_ID

LEFT JOIN이나 LEFT OUTER JOIN이나 같은 결과값을 출력한다. LEFT JOIN 이전에 선언한 테이블을 중심으로 이후에 선언한 테이블을 합친다고 생각하면 된다. 즉 위에선 ANIMAL_OUTS 테이블이 중심이 되어 해당 테이블에 있는 모든 데이터들은 결과에 표시된다. 만약 ANIMAL_OUTS에는 있는데 합쳐지는 ANIMAL_INS 테이블에 없는 데이터는 NULL 값으로 표시된다.

따라서 이 NULL 값을 찾는 것이 WHERE 절이고, 이때 ANIMAL_OUTS의 ANIMAL_ID와 NAME을 구하면 되므로 SELECT 절에는 alias A를 attribute 명 앞에 붙여주면 된다.

728x90
반응형