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


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

 

一、查詢樹狀結構某節點下的所有子節點

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 

 

二、查詢樹狀結構某節點(44)的上級所有根節點

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; 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM