재귀 CTE의 라인별 실행
재귀 공통 테이블 표현식(CTE)은 이해하기 어려운 경우가 많지만 실행 라인을 다음과 같이 분류하여 이해하십시오. line.
Anchor
SELECT id, Name, ParentID, CAST(Name AS VARCHAR(1000)) AS Path FROM @tbl WHERE ParentId IS NULL
재귀 멤버
SELECT t.id, t.Name, t.ParentID, CAST((a.path + '/' + t.Name) AS VARCHAR(1000)) AS "Path" FROM @tbl AS t JOIN abcd AS a ON t.ParentId = a.id
끝없는 UNION ALL
재귀 CTE를 반복할 때마다 새로운 수준의 계층 구조를 추가하면서 수평으로 확장되는 끝없는 UNION ALL이라고 생각해 보세요. 예를 들어 abcd2에는 abcd1의 하위 노드가 포함되고, abcd3에는 abcd2의 하위 노드가 포함되는 식입니다.
각 반복
중지 조건
이론적으로 재귀 CTE는 무한정 실행될 수 있습니다. 그러나 SQL Server는 중지 조건을 구현하여 무한 레코드 집합을 방지합니다. 재귀 멤버가 새 행을 생성하지 못하면 반복이 중지됩니다.
이 예에서 재귀 멤버가 abcd6 수준의 하위 노드를 찾지 못하면 반복이 종료됩니다.
최종 결과
최종 결과는 최상위 노드부터 시작하여 완전한 계층 트리입니다. 가장 낮은 수준까지 확장됩니다. 경로 열은 계층 구조의 각 노드에 대한 전체 경로를 제공합니다.
위 내용은 재귀 CTE는 SQL Server에서 어떻게 한 줄씩 실행됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!