DB/쿼리
[재귀쿼리] 실무에서 많이 쓰일 수 있는 쿼리
SH.DevBlog
2023. 10. 22. 18:55
재귀 쿼리가 필요한 이유?
- 실무에서 쿼리를 작성하다 보면, 해당 테이블에 데이터가 없는데 인위적으로 나오게 만드는 경우(데이터가 없으므로 로우에 아무것도 안나오겠지만 null이라는 결과값이 나와야하는 경우) 또는 특정 일자를 기준으로 일주일치 또는 한달치의 row를 출력해야 하는 경우에 활용할 수 있다.
- 예시) 네이버 지도의 아래와 같은 경우에 사용 가능
환경
- oracle, MS-Sql, Tibero와 같이 DB마다 약간 상이하거나 같을 수는 있지만 적어도 대부분의 RDBMS에서는 활용할 수 있다.
구현1
- my sql 기준으로 작성
- 7개의 로우를 인위적으로 생성하는 쿼리
WITH RECURSIVE T1 as (
SELECT 1 as LV
UNION ALL
SELECT LV + 1
FROM T1
WHERE LV < 7
) SELEDCT *
FROM T1
결과값

구현2
- 위의 쿼리를 응용하여 오늘 날짜를 기준으로 일주일치의 데이터를 생성
WITH RECURSIVE T1 AS (
SELECT 1 AS LV
UNION ALL
SELECT LV + 1
FROM T1
WHERE LV < 7
) SELECT DATE_ADD(DATE_FORMAT(NOW(), '%Y-%m-%d'), INTERVAL T1.LV DAY) as WEEK_DT
FROM T1
- 결과값