루트 요소는 주어진 루트의 자식 요소와 동일한 방식으로 찾을 수 있지만
이지만 쿼리는 반대 방향으로 검색해야합니다. >http://www.sqlfiddle.com/#!12/5952b8/7이 쿼리는 주어진 루트의 모든 어린이 검색
:
WITH RECURSIVE childs(id, parent_id)
AS (
-- get parent
SELECT id, parent_id
FROM tab
WHERE id = 10
UNION ALL
-- get all children
SELECT t.id, t.parent_id
FROM childs c
JOIN tab t
ON t.parent_id = c.id
)
SELECT * from childs;
를이 쿼리가 주어진 자식 노드의 모든 부모를 검색합니다
- :
는 간단한 데모를 살펴 보자
WITH RECURSIVE parents(id, parent_id)
AS (
-- get leaf children
SELECT id, parent_id
FROM tab
WHERE id = 14
UNION ALL
-- get all parents
SELECT t.id, t.parent_id
FROM parents p
JOIN tab t
ON p.parent_id = t.id
)
SELECT * from parents
-- WHERE parent_id is null;
루트 노드 만 필요한 경우, 절 WHERE parent_id IS NULL
은 루트를 제외한 모든 것을 필터링합니다.
문서에는 좋은 예제가 있습니다. 그들을 사용해 보셨습니까? –