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 行受影响)
     
  • 相关阅读:
    A1082 Read Number in Chinese [汉字读数字]
    A1077 Kuchiguse [字符串找相同后缀]
    A1035 Password [修改字符]
    A1001 A+B Format [字符串处理]
    django文档总结之会话保持、视图、中间件(2)
    django文档总结之基本操作(1)
    VSCode常用命令快捷键
    vscode配置远程免密
    linux下deb包的管理及制作 | 一次成功
    shell脚本之sed详解(1)
  • 原文地址:https://www.cnblogs.com/tanbin1766/p/3156268.html
Copyright © 2011-2022 走看看