재귀 CTE를 사용하여 단일 쿼리로 MySQL 테이블에서 모든 상위 항목 찾기
계층 구조의 데이터베이스에서 상위 항목 식별 특정 레코드를 처리하는 것은 복잡한 작업일 수 있습니다. MySQL에서는 재귀 공통 테이블 표현식(CTE)을 사용하여 이 문제를 효율적으로 해결할 수 있습니다. 문제 설명과 그 해결책을 살펴보겠습니다.
문제 설명:
계층 구조(예: 제공된 스키마의 구조)가 있는 MySQL 테이블이 주어졌습니다. 각 행은 ID, 제목, 부모 ID 및 기타 관련 정보가 있는 노드를 나타내며, 작업은 다음을 사용하여 계층 구조에 있는 특정 노드의 모든 조상(부모)을 검색하는 것입니다. 단일 쿼리.
해결책:
제공되는 솔루션은 재귀 CTE를 활용하여 계층 구조를 탐색하고 해당 ID로 지정된 노드의 상위를 식별합니다. 다음 쿼리는 접근 방식을 보여줍니다.
SELECT T2.id, T2.title, T2.controller, T2.method, T2.url FROM ( SELECT @r AS _id, (SELECT @r := parent_id FROM menu WHERE id = _id) AS parent_id, @l := @l + 1 AS lvl FROM (SELECT @r := 31, @l := 0) vars, menu m WHERE @r <> 0) T1 JOIN menu T2 ON T1._id = T2.id ORDER BY T1.lvl DESC;
쿼리 설명:
이 쿼리는 단일 SQL 문으로 지정된 노드의 모든 상위 항목을 효율적으로 검색하여 MySQL에서 계층적 데이터를 탐색하기 위한 편리하고 효율적인 솔루션을 제공합니다.
위 내용은 단일 쿼리를 사용하여 MySQL 계층 테이블에서 노드의 모든 상위 항목을 어떻게 찾을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!