재귀적 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!