SQLSERVER 2005 遞迴查詢

2021-06-06 16:55:09 字數 1428 閱讀 6360

專案中有使用者組表usergroup如下:

其中pid表示當前組的上級組

表資料如下:

現在想查詢出頂級組[沒有上級組叫頂級組]a1組的所有子孫組id,sql如下:

--查詢子節點

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

查詢結果如下:

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如下:

--查詢父節點

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

)select * from rtu2

查詢結果如下:

id          pid

----------- -----------

26          23

23          20

20          6

6           null

(4 行受影響)

SQLSERVER 2005 遞迴查詢

專案中有使用者組表usergroup如下 其中pid表示當前組的上級組 表資料如下 現在想查詢出頂級組 沒有上級組叫頂級組 a1組的所有子孫組id,sql如下 查詢子節點 with rtd1 as select id pid from usergroup rtd2 as select from rt...

sqlServer2005遞迴的實現

create table items itemid varchar 5 not null primary key,itemname varchar 25 not null,other columns,e.g.unit price,measurement unit create table bom i...

SQLServer2005下的遞迴查詢

在sqlserver2005下,遞迴查詢可以通過公共表示式 cte 來實現。如下所示 withcolumntree projectid,parentid,columnid,columnname,columnurl,ifdel,tag,clevel as select projectid,parent...