zoukankan      html  css  js  c++  java
  • 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; 
  • 相关阅读:
    IO复习
    递归
    转换流
    编码与解码
    打印流(printStream)
    Properties
    【转】将Visual Studio武装到底
    【转】VS2008中的自定义格式化代码
    C++开发工具的常用插件
    抽烟的注意事项
  • 原文地址:https://www.cnblogs.com/Fooo/p/9687811.html
Copyright © 2011-2022 走看看