SqlServer :實現樹形結構遞歸查詢(無限極分類)

SQL Server 2005開始,咱們能夠直接經過CTE來支持遞歸查詢,CTE即公用表表達式 公用表表達式(CTE),是一個在查詢中定義的臨時命名結果集將在from子句中使用它。每一個CTE僅被定義一次(但在其做用域內能夠被引用任意次),而且在該查詢生存期間將一直生存。能夠使用CTE來執行遞歸操做。spa

 

1、查詢樹狀結構某節點下的全部子節點code

with cte_child(id,areaName,pid,level)
as
(
    --起始條件
    select id,areaName,pid,0 as level from erp_area
    where id = 1 -- 優先列出第一節點查詢條件
 
    union all
 
    --遞歸條件 
    select a.id,a.areaName,a.pid,b.level+1 
    from erp_area a 
    inner join  
    cte_child b 
    on ( a.pid=b.id)  
)
select  * from cte_child 

 

2、查詢樹狀結構某節點(44)的上級全部根節點blog

with cte_child(id,areaName,pid) 
as 
(
 
    --起始條件 
    select id,areaName,pid from erp_area 
    where id = 44   --列出子節點查詢條件
 
    union all
 
    --遞歸條件
 
    select a.id,a.areaName,a.pid 
    from erp_area a 
    inner join  
    cte_child b          --執行遞歸 
    on a.id=b.pid   
)       
select * from cte_child; 
相關文章
相關標籤/搜索