집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 트리 구조에서 모든 하위 항목을 재귀적으로 검색하는 방법은 무엇입니까?
MySQL에서 트리 구조 반복
데이터베이스에서 계층적 데이터를 관리하는 것은 어려울 수 있습니다. 일반적인 접근 방식 중 하나는 제공된 질문에서 알 수 있듯이 부모-자식 관계를 사용하는 것입니다. 직계 하위 항목을 쿼리하는 것은 간단하지만 모든 하위 항목을 검색하는 것은 더 복잡할 수 있습니다.
MySQL 문서에서는 다음을 포함하여 계층적 데이터를 처리하기 위한 여러 가지 방법을 제안합니다.
주어진 예에서 경로 열거 방법을 사용하면 다음 쿼리는 상위 위치의 모든 하위 항목을 검색합니다.
WITH RECURSIVE descendant_path AS ( SELECT id, path FROM locations WHERE id IN (SELECT location_id FROM location_parent WHERE parent_id = '$locationid') UNION ALL SELECT l.id, CONCAT(dp.path, ',', l.id) FROM locations l JOIN descendant_path dp ON l.path LIKE CONCAT(dp.path, '%') ) SELECT id FROM descendant_path;
이 쿼리는 재귀 CTE(공통 테이블 표현식)를 사용하여 트리 구조를 반복하고 각 하위 위치에 대한 경로를 구축합니다. 초기 쿼리에서 시작 위치를 지정하면 단일 패스로 모든 하위 항목을 검색할 수 있습니다.
위 내용은 MySQL 트리 구조에서 모든 하위 항목을 재귀적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!