"Connect By Prior" 없이 MySQL에서 계층적 데이터 쿼리
MySQL에서 명시적인 "Connect By Prior" 절이 없음에도 불구하고 , 재귀적 조합을 사용하여 계층적 데이터를 검색하는 것이 가능합니다. 기술.
재귀 순회 알고리즘
tb_Tree와 같은 계층적 테이블을 재귀적으로 순회하려면 다음 단계를 따르세요.
이 재귀 프로세스는 모든 리프 노드가 식별될 때까지 계속됩니다.
심층기반 접근
트리의 최대 깊이에 따라 테이블을 반복적으로 자체 조인하여 가장 깊은 수준에 도달한 다음 나머지 NULL 값을 필터링할 수 있습니다.
중첩 집합 표현
또는 , 중첩된 집합 표현을 사용하도록 테이블 구조를 수정할 수 있습니다. 여기에는 계층 구조에 있는 각 노드의 왼쪽 및 오른쪽 경계를 나타내는 추가 열을 추가하는 작업이 포함됩니다.
하위 항목 검색을 위한 쿼리 예시
특정 노드의 모든 하위를 검색하려면 Id가 X인 경우 다음 쿼리를 사용합니다.
SELECT * FROM tb_Tree WHERE ParentId IN ( SELECT Id FROM tb_Tree WHERE ParentId = X UNION ALL /* Recursive traversal of children */ SELECT Id FROM tb_Tree WHERE Id IN ( SELECT Id FROM tb_Tree WHERE ParentId = X ) );
이 쿼리는 재귀적으로 순회합니다. 계층 구조, 하위 노드와 관련된 모든 ID 값을 수집합니다.
위 내용은 CONNECT BY PRIOR 없이 MySQL에서 계층적 데이터를 쿼리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!