본문 바로가기
SQL

SQL - WITH RECURSIVE 문(재귀 쿼리)

by sinabeuro 2021. 4. 23.
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

댓글