專案中有使用者組表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...