728x90
1. WITH RECURSIVE 기본 구문
with recursive 테이블명 as (
select 1 as p --재귀변수
union all
select p+1 from 테이블명
where p<3
)
select * from 테이블명;
union all 위의 select문을 3번 반복하여 레코드가 3개인 가상의 테이블을 만듭니다. 계층 구조가 가능한 테이블의 데이터를 조회하여 사용할 때 쓰입니다.
2. WITH RECURSIVE 예제
with recursive tree_result (brand_no, hgrnk_brand_no, brand_nm, rept) as (
select
brand_no
, hgrnk_brand_no
, brand_nm
, 1 as rept
from brand
union all
select
brand_no
, hgrnk_brand_no
, brand_nm
, rept + 1 as rept
from brand brd
inner join tree_result tree
on tree.brand_no = brd.brand_hgrnk_no
where tree.rept < 3
)
select brand_no, hgrnk_brand_no, brand_nm, rept, rept from tree_result;
3단계로 계층 구조가 가능한 브랜드 테이블에서 위와 같은 예시처럼 코드를 작성하게 되면 1단계(최상위 브랜드)부터 3단계 (하위 브랜드)를 조회할 수 있습니다.
728x90
'SQL' 카테고리의 다른 글
SQL - partition by 성능개선 (0) | 2021.10.07 |
---|---|
SQL - Array 정리 (0) | 2021.10.05 |
SQL - LATERAL (0) | 2021.10.05 |
댓글