본문 바로가기

알고리즘/SQL

[PROG] LV4 특정 세대의 대장균 찾기 (MySQL)

문제링크

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;