zoukankan      html  css  js  c++  java
  • 妙用CTE,一条语句实现sql递归查询,SQLServer 递归

    数据库设计中经常碰到父子节点的关系结构,经常需要找到某个节点的根,或者某个节点的所有子节点,一般做法都是在业务层做递归的方式实现,或者数据库存储过程实现。但其实SQLServer提供的CTE可以很好的简化我们的工作,非常方便的实现这一功能。

    例子:
      

    1.正向递归,找某个节点下的所有子节点

    with t as--如果CTE前面有语句,需要用分号隔断
    (selectId,ParentId,Name
    from WMS_Org whereId='2'union all select r1.Id,r1.ParentId,r1.Name from WMS_Org r1 join t as r2 on r1.ParentId= r2.Id) select*from t order byId

    2.逆向递归,找某个节点下的上层节点,直至根节点

    with t as--如果CTE前面有语句,需要用分号隔断
    (selectId,ParentId,Name
    from WMS_Org
    where Id='9'union all
    select r1.Id,r1.ParentId,r1.Name
    from WMS_Org r1 join t as r2 on r1.Id= r2.ParentId)
    select*from t order byId

    仅仅是这里条件的变化哦:select r1.Id,r1.ParentId,r1.Name from WMS_Org r1 join t as r2 on r1.Id = r2.ParentId

    Proc可参考:         http://www.cnblogs.com/keepfool/archive/2012/02/05/2338700.html

  • 相关阅读:
    浅谈display:flex
    MVVM
    HDFS 伪分布式集群搭建
    HDFS入门
    Hadoop-HDFS
    Hadoop介绍
    大数据-高并发Nginx
    大数据-高并发LVS3Keepalived
    大数据-高并发LVS2实验
    大数据-高并发LVS1
  • 原文地址:https://www.cnblogs.com/qidian10/p/3417428.html
Copyright © 2011-2022 走看看