개발/SQL
프로그래머스SQL_특정 세대의 대장균 찾기
송디
2024. 5. 5. 11:14
■ 사용 문법
서브 쿼리, IS NULL
■ 사용 방법
서브쿼리를 이용해 자식 ID를 찾아 3세대 까지 이동하였다.
다만, 내 방식에는 반복이 계속되었는데 3세대가 아니라 10세대를 구하라고 했다면 풀기 힘들 것이다.
찾아보니 WITH RECURSIVE 를 사용하여 재귀 문제를 풀 수 있었다.
■ 코드
-- 코드를 작성해주세요
SELECT C.ID
FROM ECOLI_DATA AS C,
(
SELECT A.ID
FROM ECOLI_DATA AS A,
(SELECT ID
FROM ECOLI_DATA
WHERE PARENT_ID IS NULL) AS B
WHERE A.PARENT_ID = B.ID
) AS D
WHERE C.PARENT_ID = D.ID
ORDER BY C.ID
*WITH RECURSIVE 사용
WITH RECURSIVE GEN_DATA AS (
SELECT
ID,
PARENT_ID,
1 AS GEN
FROM ECOLI_DATA
WHERE PARENT_ID IS NULL
UNION ALL
SELECT
A.ID,
A.PARENT_ID,
(GEN + 1) AS GEN
FROM ECOLI_DATA AS A
INNER JOIN GEN_DATA g ON A.PARENT_ID = g.ID
)
SELECT ID FROM GEN_DATA WHERE GEN = 3 ORDER BY ID
728x90