2010-01-01 5 views
2

나는 다음과 같은 테이블이 있습니다SQL 서버 가져 오기 상위 목록

id name parent_id 
1 ab1 3 
2 ab2 5 
3 ab3 2 
4 ab4 null 
5 ab5 null 
6 ab6 null 

내가 입력 ID로 질의를 할 필요 = 1 (예에 대한) 결과는 다음과 같이 될 것입니다 :

id name parent_id 
5 ab5 null 
2 ab2 5 
3 ab3 2 
1 ab1 3 

(모든 레벨의 부모는 모두 항목 id = 1에서 시작)

답변

5

이와 비슷한 기능이 있습니까?

WITH parents(id,name,parent,level) 
    AS 
    (
    SELECT 
     ID, 
     NAME, 
     PARENT, 
     0 as level 
    FROM 
     TABLE 
    WHERE ID = 1 
    UNION ALL 
    SELECT 
     ID, 
     NAME, 
     PARENT, 
     Level + 1 
    FROM 
     TABLE 
    WHERE 
     id = (SELECT TOP 1 parent FROM parents order by level desc) 
    ) 
    SELECT * FROM parents