> 데이터 베이스 > MySQL 튜토리얼 > 재귀 CTE는 단계별로 어떻게 작동합니까?

재귀 CTE는 단계별로 어떻게 작동합니까?

Barbara Streisand
풀어 주다: 2024-12-28 21:17:10
원래의
196명이 탐색했습니다.

How Do Recursive CTEs Work Step-by-Step?

재귀적 CTE 실행 분석

재귀적 CTE는 궁극적으로 원하는 결과 세트를 생성하는 단계별 실행 프로세스를 따릅니다. 더 나은 이해를 위해 각 단계를 한 줄씩 분석해 보겠습니다.

WITH abcd AS (

이 줄은 "abcd"라는 재귀 CTE를 선언합니다. 결과를 축적하는 임시 테이블입니다.

-- 앵커

첫 번째 select 문은 앵커 역할을 하며 앵커 조건을 충족하는 행을 선택합니다. 이 경우 null ParentID를 사용하여 @tbl에서 행을 가져옵니다. abcd" CTE.

SELECT id, Name, ParentID, CAST(Name AS VARCHAR(1000)) AS Path

이 줄은 ID, Name, ParentID 및 처음에 행의 Name만 포함하는 계산된 열 "Path"를 추출합니다.

FROM @tbl

데이터는 임시 테이블에서 가져옵니다. @tbl.

WHERE ParentId IS NULL

이 조건은 ParentID가 null인 행을 필터링하여 최상위 행을 효과적으로 선택합니다.

UNION ALL

이 연산자는 앵커 선택 문과 재귀 멤버.

--재귀 멤버

두 번째 select 문은 앵커를 기반으로 반복을 수행하는 재귀 멤버를 구성합니다.

SELECT t.id, t.Name, t.ParentID, CAST((a.path '/' t.Name) AS VARCHAR(1000)) AS "Path"

이 줄은 ID, Name, ParentID 및 부모의 "Path"를 현재 행의 "Path"와 연결하는 수정된 열 "Path"를 검색합니다. 이름.

FROM @tbl AS t

데이터는 별칭 "t"인 @tbl 임시 테이블에서 가져옵니다.

JOIN abcd AS a

이 조인 ParentID를 사용하여 "t"의 행을 기존 "abcd" CTE의 행과 연결합니다. column.

ON t.ParentId = a.id

조인 조건은 하위 행이 상위 행과 일치하는지 확인합니다.

SELECT * FROM abcd

마지막으로 이 문은 전체 결과 집합을 반환합니다. 모든 반복을 포함하여 재귀 CTE에서 가져옵니다.

위 내용은 재귀 CTE는 단계별로 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿