> 데이터 베이스 > MySQL 튜토리얼 > 재귀 쿼리는 어떻게 MySQL의 계층적 데이터에서 상위 항목을 효율적으로 검색할 수 있습니까?

재귀 쿼리는 어떻게 MySQL의 계층적 데이터에서 상위 항목을 효율적으로 검색할 수 있습니까?

DDD
풀어 주다: 2024-12-04 19:55:12
원래의
985명이 탐색했습니다.

How Can Recursive Queries Efficiently Retrieve Ancestors in MySQL's Hierarchical Data?

MySQL의 계층적 데이터 검색을 위한 재귀 쿼리

데이터베이스에서 계층적 데이터를 처리할 때 여러 데이터에서 정보를 검색해야 하는 경우가 많습니다. 관계의 수준. MySQL에서는 재귀 쿼리가 이 작업에 대한 강력한 솔루션을 제공합니다.

다음 예를 고려해 보십시오. 'a'와 'b'라는 두 개의 열이 있는 테이블에 표현된 간단한 가계도를 상상해 보십시오. 여기서 'a'는 부모와 'b'는 자식을 나타냅니다. 특정 개인의 모든 조상(부모, 조부모 등)을 찾고 싶다면 어떻게 접근해야 할까요?

MySQL에서는 재귀 쿼리를 활용하여 트리 구조를 탐색하고 조상을 검색할 수 있습니다. 특정 노드의. 'b' 값이 5인 개인의 조상을 찾고 싶다고 가정해 보겠습니다. 다음 쿼리는 이를 수행합니다.

SELECT  @id := (SELECT senderid FROM mytable WHERE receiverid = @id) AS person
FROM    (SELECT  @id := 5) vars
STRAIGHT_JOIN mytable
WHERE   @id IS NOT NULL
로그인 후 복사

이 쿼리는 재귀 하위 쿼리를 사용하여 'a' 사이의 관계를 설정합니다. (senderid) 및 'b' (receiverid) 열입니다. 내부 쿼리는 변수 @id를 원하는 노드(5)로 초기화한 다음 외부 쿼리를 사용하여 더 이상 조상이 없을 때까지 후속 행을 재귀적으로 조인합니다.

이 쿼리를 실행하면 다음 결과를 얻을 수 있습니다. :

person
1
2
3
4

이 결과는 초기 노드 자체와 해당 부모, 조부모 등을 포함하여 'b' 값이 5인 노드까지 이어지는 완전한 계층 구조를 제공합니다. 에. 따라서 MySQL의 재귀 쿼리는 계층적 데이터를 탐색하고 여러 수준의 관계에 걸쳐 자세한 정보를 검색하기 위한 강력한 도구 역할을 합니다.

위 내용은 재귀 쿼리는 어떻게 MySQL의 계층적 데이터에서 상위 항목을 효율적으로 검색할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿