WITH RECURSIVE (재귀 쿼리)의 정리
재귀 쿼리 정리 :
1. 메모리 상 가상 테이블을 저장하는 것으로 하나의 쿼리가 동작 하는 동안만 존재한다.
2. 반드시 UNION을 사용 해야 한다.
- UNION ALL (중복 허용)
3. 반드시 비반복문(Non-Recursive)도 최소 1개가 요구 된다. 앵커라 불리며 처음 한번만 실행한다.
4. SubQuery에서 바깥의 가상 테이블을 참조하는 문장(반복되는 쿼리)가 반드시 요구된다.
5. 반복되는 문장은 반드시 정지조건을 포함하고 있어야 한다.
6. 가상의 테이블을 구성하면서 그 자신(재귀 :가상의 테이블)을 참조하여 값을 결정할 때 유용하다.
*. 재귀 조건을 잘못 설정하면 n^으로 동작하기 때문에 불필요한 동작을 수행할 수 있음
WITH RECURSIVE test AS (
-- Non-Recursive (앵커)
SELECT 1 AS num
UNION ALL
-- Recursive 반복 (읽어 올 때마다 행의 위치가 기억되어 다음번 읽어 올 때 다음 행으로 이동함)
SELECT num+1 AS num FROM test WHERE num<10
)
SELECT * FROM test;
참고 :
https://inpa.tistory.com/entry/MYSQL-%F0%9F%93%9A-RECURSIVE-%EC%9E%AC%EA%B7%80-%EC%BF%BC%EB%A6%AC
[MYSQL] 📚 RECURSIVE (재귀 쿼리)
WITH RECURSIVE 문 (재귀 쿼리) 메모리 상에 가상의 테이블을 저장한다. 반드시 UNION 사용해야한다. 반드시 비반복문(Non-Recursive)도 최소한 1개 요구된다. 처음 한번만 실행 SubQuery에서 바깥의 가상의
inpa.tistory.com
https://dncjf0223.tistory.com/59
[MySQL] With Recursive 문, 세션 변수 활용, Pagination
1. 기본 테이블 형태 select * from employee; 2. Employee 테이블에서 직원 번호, 직원 이름과 직원의 상사 번호와 상사 이름을 출력 * With 절을 사용하지 않은 쿼리 select b.empno, b.ename, b.mgr, a.ename..
dncjf0223.tistory.com
계층형 쿼리에 쓰일 법한 with recursive 절에 대해 알아봅시다.
프로그래머스나 해커랭크에서 sql 문제를 풀다 보면 with 문을 쓰면 더 간결해 지겠구나. 라는 생각이 들 때가 있어요. 이 with절이 그냥 단순하게 실행 결과를 임시로 저장해 두고 쓴다. 정도로만
codingdog.tistory.com
https://mariadb.com/kb/en/recursive-common-table-expressions-overview/
Recursive Common Table Expressions Overview
A recursive CTE will repeatedly execute subsets of the data until obtaining the complete results
mariadb.com
https://unrealengine.tistory.com/163
MySQL 계층구조 질의
WITH RECURSIVE, UNION을 사용하여 계층구조 질의를 작성하기 위한 기초 정리 원문참조 : https://dev.mysql.com/doc/refman/8.0/en/with.html MySQL의 WITH 절은 WITH절에 포함된 서브커리의 결과집합을 일단 이..
unrealengine.tistory.com
https://jjon.tistory.com/entry/Recursive-CTECommon-Table-Expression-%ED%99%9C%EC%9A%A9
Recursive CTE(Common Table Expression) 활용
이전에 작성한 내용(MySQL 8.0 신기능 CTE 활용) 중에 재귀 쿼리에 대한 내용을 언급했었습니다. SQL은 일반적으로 재귀 쿼리 구조에 좋지 않지만 이제 MySQL에서 재귀 쿼리를 작성할 수 있습니다. MySQ
jjon.tistory.com
https://velog.io/@sangmin7648/MySQL-WITH-RECURSIVE
MySQL WITH RECURSIVE
CTE와 재귀적 CTE
velog.io
'Database > Maria,Mysql' 카테고리의 다른 글
percona mysql을 docker로 설치하는 방법 (0) | 2023.06.18 |
---|---|
join에서 where과 on의 차이, outer join에 대한 정리 (0) | 2022.08.30 |
WITH와 CTE를 이용한 재귀적 사용법 (재귀 쿼리) (0) | 2022.08.29 |
with와 CTE (common table expression) (0) | 2022.08.29 |
1. replication with mariaDB - MariaDB와 MySQL의 Replication은 다르다! (0) | 2022.01.25 |
댓글