문제


정답
SELECT A.ITEM_ID, ITEM_NAME, RARITY FROM ITEM_INFO AS A
JOIN ITEM_TREE AS B
ON A.ITEM_ID = B.ITEM_ID
WHERE B.PARENT_ITEM_ID IN (SELECT ITEM_ID FROM ITEM_INFO WHERE RARITY = 'RARE')
ORDER BY A.ITEM_ID DESC;쿼리 설명
- SELECT 절:
ITEM_INFO테이블에서ITEM_ID,ITEM_NAME,RARITY열을 선택합니다.- 여기서
ITEM_NAME과RARITY는 테이블A(ITEM_INFO)에서 가져온 열입니다.
SELECT A.ITEM_ID, ITEM_NAME, RARITY
- FROM 절 및 JOIN:
ITEM_INFO테이블을A로,ITEM_TREE테이블을B로 별칭을 지정합니다.A.ITEM_ID와B.ITEM_ID가 같은 레코드를 조인합니다. 즉,ITEM_INFO테이블과ITEM_TREE테이블의ITEM_ID가 일치하는 행을 결합합니다.
FROM ITEM_INFO AS A JOIN ITEM_TREE AS B ON A.ITEM_ID = B.ITEM_ID
- WHERE 절:
- 서브쿼리를 통해
ITEM_INFO테이블에서RARITY값이 'RARE'인 행들의ITEM_ID를 선택합니다. - 그런 다음,
B.PARENT_ITEM_ID가 이 서브쿼리 결과에 포함되는 행만 선택합니다. 즉,PARENT_ITEM_ID가 'RARE' 등급의 아이템인 행들을 조회합니다.
WHERE B.PARENT_ITEM_ID IN (SELECT ITEM_ID FROM ITEM_INFO WHERE RARITY = 'RARE')- ORDER BY 절:
A.ITEM_ID를 기준으로 내림차순으로 정렬하여 결과를 반환합니다.
ORDER BY A.ITEM_ID DESC
Share article