zoukankan      html  css  js  c++  java
  • SQLSERVER的递归查询

     
    项目中有用户组表UserGroup如下:
    其中PID表示当前组的上级组
    表数据如下:
    现在想查询出顶级组[没有上级组叫顶级组]A1组的所有子孙组ID,SQL如下:
    [sql]  www.2cto.com 
    --查询子节点 
    with  
        RTD1 as( 
    select id ,pid from UserGroup
        ), 
        RTD2 as( 
            select * from RTD1 where id=6 
            union all 
            select RTD1.* from RTD2 inner join RTD1  
            on RTD2.id=RTD1.PID 
        ) 
    select * from RTD2 
      www.2cto.com 
    查询结果如下:
    id          pid
    ----------- -----------
    6           NULL
    17          6
    18          6
    20          6
    21          20
    22          20
    23          20
    24          20
    29          20
    25          23
    26          23
    28          26
    27          25
    (13 行受影响)
     
    现在想查询出A1-B3-C3-D2组的所有上级组ID,SQL如下:
    [sql]
    --查询父节点 
    with  
        RTU1 as( 
            select id ,pid from UserGroup 
        ), 
        RTU2 as( 
            select * from RTU1 where id=26 
            union all 
            select RTU1.* from RTU2 inner join RTU1  
            --on myT2.id=myT.PID 
            on RTU2.PID=RTU1.ID 
        )    www.2cto.com 
    select * from RTU2 
     
    查询结果如下:
    id          pid
    ----------- -----------
    26          23
    23          20
    20          6
    6           NULL
    (4 行受影响)
     
  • 相关阅读:
    [csp-s模拟测试72] 简单的期望
    [csp-s模拟测试72] 简单的序列
    csp-s模拟测试70
    经验积累
    [csp-s模拟测试69] 回滚莫队
    [模板]主席树查前趋后继
    复习及学习计划
    错排公式
    csp-s模拟测试 56~65
    LIS LCS LCIS
  • 原文地址:https://www.cnblogs.com/tanbin1766/p/3156268.html
Copyright © 2011-2022 走看看