카테고리 없음

IS NULL 업그레이드 할 수 없는 아이템 구하기

monawa 2024. 12. 14.
728x90

1. 문제링크

https://school.programmers.co.kr/learn/courses/30/lessons/273712

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

2. 제출한답

SELECT ITEM_ID, ITEM_NAME, RARITY
FROM ITEM_INFO
WHERE ITEM_ID NOT IN (SELECT PARENT_ITEM_ID 
                FROM ITEM_TREE WHERE NOT ISNULL(PARENT_ITEM_ID))
ORDER BY ITEM_ID DESC;

 

ITEM_TREE의 PARENT_ITEM_ID와 관련이 없는 ITEM_ID를 조회 합니다 이떄  NULL 값 처리를 통해 NOT IN 조건이 올바르게 동작하도록 했으며, 이를 통해 데이터 누락이나 불필요한 필터링 문제를 방지합니다.

 

이는 IN 연산자는 서브쿼리의 값 중 하나라도 일치하면 데이터를 조회하지만, NOT IN 연산자는 서브쿼리의 모든 값과 비교하여 모두 다르다고 판단될 때만 데이터를 조회합니다. 이때, 서브쿼리에 NULL 값이 포함되어 있다면 문제가 발생합니다. NULL과의 비교는 항상 UNKNOWN(불확실)으로 처리되기 때문에, NOT IN 조건이 FALSE로 평가되어 결과적으로 데이터가 조회되지 않습니다. 이를 방지하려면 서브쿼리에서 NULL 값을 제거하고 조회해야 합니다.

728x90

댓글