Database/SQL

MySql, MariaDB에서 connect by level 사용방법

리커니 2021. 2. 23. 17:58
반응형

MySql, MariaDB에서 connect by level 사용방법

 

오랜만에 포스팅에서는 MySql, MariaDB에서 connect by level 사용방법을 알아보겠습니다.

 

connect by level 은 증가하거나 감소하는 데이터를 동적으로 생성할때 사용하는데요,

사용방법은 아래와 같습니다. 

 

SELECT LEVEL
  FROM DUAL
  CONNECT BY LEVEL <= 8

 

위의 쿼리 결과는 아래와 같습니다.

 

LEVEL

1

2

3

4

5

6

7

8

 

뭔가 느낌이 오시죠?

이처럼 내가 원하는 행만큼의 데이터를 가져오고 싶을때 사용됩니다. 

 

그럼 MySql, MariaDB에서는 어떻게 사용되는지 보도록 하죠.

 

MySql, MariaDB 에서는 WITH RECURSIVE 구문을 활용합니다. 

WITH RECURSIVE 는 번역과 같이 재귀 함수의 역할을 합니다. 자기 자신을 호출하는 것 이죠.

예시를 보면서 설명을 하도록 하죠.

 

WITH RECURSIVE A AS (
    SELECT 1 AS LEVEL
    UNION ALL
    SELECT 1+A.LEVEL
      FROM A
     WHERE A.LEVEL <8
     )
SELECT LEVEL
  FROM A

괄호 안의 WHERE 조건이 만족할 때 까지 자신을 호출하게 됩니다. 

그래서 결과는 위의 CONNECT BY LEVEL 구문과 같게 되죠.

 

 

 

 

 

 

 

반응형