카테고리 없음

[Programmers SQL] IN 쿼리에서 NULL 처리

짹짹체유 2024. 10. 24. 18:14

[ SQL문제 ] IS NULL > 업그레이드 할 수 없는 아이템 구하기

 

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

 

프로그래머스

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

programmers.co.kr

 

Q.
더 이상 업그레이드할 수 없는 아이템의 아이템 ID(ITEM_ID), 아이템 명(ITEM_NAME), 아이템의 희귀도(RARITY)를 출력하는 SQL 문을 작성해 주세요. 이때 결과는 아이템 ID를 기준으로 내림차순 정렬해 주세요.

 

 

ITEM_INFO 테이블

ITEM_ID ITEM_NAME RARITY PRICE
0 ITEM_A RARE 10000
1 ITEM_B RARE 9000
2 ITEM_C LEGEND 11000
3 ITEM_D RARE 10000
4 ITEM_E RARE 12000

 

 

ITEM_TREE 테이블

ITEM_ID PARENT_ITEM_ID
0 NULL
1 0
2 0
3 1
4 1

 

 

  • NULL은 아무런 값도 갖지 않는 비어있는 값
  • 값이 아무것도 없기 때문에 다른 무언가와 비교 자체를 할 수가 없음
  • NULL인 값이 있기 때문에 IN을 사용하면 인식을 못함

=> "IS NOT FALSE"를 추가해줘야 함

NULL은 FALSE로 인식되기 때문에 IS NOT FALSE로 !!!

 

SELECT ITEM_ID, ITEM_NAME, RARITY
FROM ITEM_INFO
WHERE ITEM_ID NOT IN (SELECT DISTINCT PARENT_ITEM_ID FROM ITEM_TREE) IS NOT FALSE
ORDER BY 1 DESC

 

 

 

 

 

※ 참고자료

https://velog.io/@park2348190/SQL-IN-%EC%BF%BC%EB%A6%AC%EC%97%90%EC%84%9C-Null-%EA%B0%92%EC%9D%98-%EC%98%81%ED%96%A5

 

SQL 'IN' 쿼리에서 Null 값의 영향

업무 중 SQL 쿼리를 작성하다가 쿼리 결과가 예상한 것과 다른 경우가 있었다. 확인해보니 WHERE 절 안의 IN, NOT IN 쿼리에서 비교 대상이 null 인 경우가 문제였는데 관련해서 검색해보니 이 주제를

velog.io

 

 

 

반응형