본문 바로가기
IT/Database

[Mysql] 계층형 쿼리 사용법 (WITH RECURSIVE)

by 성준하이 2024. 11. 3.
반응형

이전 포스팅에서

1. Oracle 에서 계층형 쿼리 사용법

2. Mysql 의 WITH 절

에 대해서 다룬 포스팅이 있다.

자세한 내용은 아래 참고 포스팅 참고 바란다.

 

이번 포스팅에서는 Mysql 에서 계층형 쿼리를 사용하는 방법이다.

 

바로 본론으로 들어가 

예시 코드와 데이터를 먼저 확인해보면 아래와 같다.

 

  • 데이터
id parent_id
1 null
2 1
3 1
4 2
5 2
6 3
7 3

위 데이터를 그림으로 나타내면 아래와 같다.

 

└── 1
            └── 2
              │         └── 4
              │         └── 5
            └── 3
                        └── 6
                        └── 7

그럼 이제 이 데이터로 계층형 쿼리를 뽑아보면 아래와 같다.

 

WITH RECURSIVE sub_table (id,parent_id) AS (
     SELECT
          id, parent_id
     FROM
          main_table
     WHERE
           id = 1

     UNION ALL

     SELECT
         t.id,
         t.parent_id
     FROM
         main_table t, sub_table r
     WHERE
          t.parent_id = r.id
)

SELECT
     *
FROM
    sub_table
;

 

id = 1 에 설정된 id 를 기준으로 하위 데이터를 모두 보여준다.


참고 포스팅

https://thenicesj.tistory.com/493

 

[Oracle] 계층형 쿼리 사용법

계층형 쿼리라고 오라클에서 존재하는 문법이 있다.테이블 내에서 예를들어ab대한민국서울서울송파구서울강남구송파구방이동송파구문정동이와 같이 a는 무조건 상위 개념이고 b는 무조건 하

thenicesj.tistory.com

https://thenicesj.tistory.com/1104

 

[Mysql] WITH 절 구문

Mysql 에서 사용 가능한 WITH 절은 서브쿼리/가상테이블 을 미리 생성해두고, 언제든지 재사용이 가능한 공통 테이블 표현식(CTE, Common Table Expression) 을 정의하는 방법이다. 가독성도 높이고 재사용

thenicesj.tistory.com

 

 

 

반응형

댓글