https://school.programmers.co.kr/learn/courses/30/lessons/273712
lv3
구현 방법
item_tree에서 parent_item_id에 등장하지 않은 item_info의 item_id를 출력하면 된다. 방법은 3가지 정도 있다.
1. not in 사용
in을 사용할 때 null이 나오는 경우를 고려해야 한다. in에서 null이 나올 때 항상 false로 처리하여 데이터가 나오지 않기 때문이다.
2. not exists 사용
3. left join 사용
코드
-- 업그레이드 할 수 없는 아이템 구하기
-- https://school.programmers.co.kr/learn/courses/30/lessons/273712
-- not in 사용
select
i.item_id,
i.item_name,
i.rarity
from
item_info i
where
i.item_id not in (
select distinct parent_item_id
from item_tree
where parent_item_id is not null
)
order by
i.item_id desc
;
-- not exists 사용
select
i.item_id,
i.item_name,
i.rarity
from
item_info i
where
not exists (
select 1
from item_tree t
where t.parent_item_id = i.item_id
)
order by
i.item_id desc
;
-- left join 사용
SELECT
i.item_id,
i.item_name,
i.rarity
FROM
item_info i
LEFT JOIN item_tree t ON i.item_id = t.parent_item_id
WHERE
t.parent_item_id IS NULL
ORDER BY
i.item_id DESC;
'sql' 카테고리의 다른 글
mysql - 프로그래머스 157340 / 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (3) | 2024.10.23 |
---|---|
mysql - 프로그래머스 131123 / 즐겨찾기가 가장 많은 식당 정보 출력하기 (0) | 2024.10.02 |
mysql - 프로그래머스 59411 / 오랜 기간 보호한 동물(2) (0) | 2024.09.07 |
mysql - 프로그래머스 131537 / 오프라인/온라인 판매 데이터 통합하기 (0) | 2024.09.02 |
프로그래머스 299310 / 연도별 대장균 크기의 편차 구하기 (2) | 2024.08.22 |