• 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; 
  • 相关阅读:
    maven生命周期
    snsapi_base和snsapi_userinfo
    MySQL大小写问题
    高德地图JSApi
    方向
    看源码和写demo是一种比较容易提升的方式
    前后端分离,接口API,契约
    java文档操作
    String.getBytes(),源码之下,了无秘密
    myeclipse快捷键(转载)
  • 原文地址:https://www.cnblogs.com/Fooo/p/9687811.html
Copyright © 2020-2023  润新知