반응형
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 구문과 같게 되죠.
반응형
'Database > SQL' 카테고리의 다른 글
자주 발생하는 오라클 에러 정리 Oracle Error (0) | 2021.09.06 |
---|---|
[NULL 처리]Incorrect decimal value: '' for column 1 java 에러 수정 방법 (2) | 2021.04.12 |
오라클 최근 몇달, 최근 몇일 데이터 행으로 조회하기 (0) | 2020.12.09 |
Oracle, MySql, MsSql 2개이상 복수 테이블 update 하는 방법 (1) | 2020.09.11 |
java.sql.SQLSyntaxErrorException: ORA-01745: 호스트/바인드 변수명이 부적합합니다 (0) | 2020.09.02 |
댓글