문제링크
https://school.programmers.co.kr/learn/courses/30/lessons/301650
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
다음을 고려해서 WITH RECURSIVE 절을 만들어야 했다.
https://www.mysqltutorial.org/mysql-basics/mysql-recursive-cte/
MySQL Recursive CTE
In this tutorial, you will learn about MySQL recursive CTE and how to use it to traverse hierarchical data in the MySQL database.
www.mysqltutorial.org
하단의 내용을 참고해서 WITH RECURSIVE와 UNION ALL 절을 참고하기!
코드
--
WITH RECURSIVE GENERATION
AS (
-- 부모 아이디가 없으면 1세대로 초기화
SELECT ID, PARENT_ID, 1 AS GEN
FROM ECOLI_DATA
WHERE PARENT_ID IS NULL
UNION ALL
-- 재귀 실행
SELECT E.ID, E.PARENT_ID, GEN + 1
FROM ECOLI_DATA AS E
JOIN GENERATION AS G
ON E.PARENT_ID = G.ID
)
SELECT ID FROM GENERATION WHERE GEN = 3;
'알고리즘 > SQL' 카테고리의 다른 글
[PROG] LV2 연도별 대장균 크기의 편차 구하기 (MySQL) (0) | 2024.10.17 |
---|---|
[PROG] LV1 특정 형질을 가지는 대장균 찾기 (MySQL) (0) | 2024.10.17 |
[PROG] LV2 부모의 형질을 모두 가지는 대장균 찾기 (MySQL) (0) | 2024.10.17 |
[PROG] LV3 대장균의 크기에 따라 분류하기 2 (MySQL) (0) | 2024.10.17 |
[PROJ] LV5 멸종위기의 대장균 찾기 (MySQL) (0) | 2024.10.17 |