코딩테스트

[26.02.25 코테(MySQL)]-업그레이드 된 아이템 구하기

지니248 2026. 2. 25. 16:29

Lv2. 업그레이드 된 아이템 구하기 (MySQL)

링크: https://school.programmers.co.kr/learn/courses/30/lessons/273711

 

내가 작성한 코드

-- 풀이1 (서브쿼리 IN)
SELECT I.ITEM_ID, I.ITEM_NAME, I.RARITY
FROM ITEM_INFO I
JOIN ITEM_TREE T
  ON I.ITEM_ID = T.ITEM_ID
WHERE T.PARENT_ITEM_ID IN (SELECT ITEM_ID
                           FROM ITEM_INFO
                           WHERE RARITY = 'RARE')
ORDER BY I.ITEM_ID DESC;

-- 풀이2 (EXISTS)
SELECT I.ITEM_ID, I.ITEM_NAME, I.RARITY
FROM ITEM_INFO I
JOIN ITEM_TREE T
  ON I.ITEM_ID = T.ITEM_ID
-- 서브쿼리가 참(True)인 행만 메인 쿼리에서 출력함
WHERE EXISTS (SELECT 1
              FROM ITEM_INFO O
              WHERE O.ITEM_ID = T.PARENT_ITEM_ID -- 현재 아이템의 부모 ID와 같은 아이템을 찾고
                AND O.RARITY = 'RARE') -- 그 부모 아이템의 희귀도가 RARE인지 확인한다
ORDER BY I.ITEM_ID DESC;