樹形表結構:
id | parentID | isDel |
1 | 0 | 0 |
2 | 1 | 0 |
3 | 1 | 1 |
4 | 2 | 0 |
5 | 2 | 0 |
一)根據父級ID查找所有子級ID,並將所有ID用逗號隔開返回
ID=1,需要返回的結果(條件為isDel=0,含本身ID):
1,2,4,5
SQL語句如下:
with cteCopy as ( select * from [table] where id=1 union all select a.* from [table] a join cteCopy b on a.parentID=b.id and a.IsDel=0 ) SELECT STUFF(( SELECT ',' +convert(VARCHAR, id) FROM cteCopy FOR XML PATH('')), 1, 1, '') AS ids
返回
ids |
1,2,4,5 |
二)根據子級ID查找所有父級ID,並將所有ID用逗號隔開返回
ID=5,需要返回的結果(條件為isDel=0,不含本身ID):
1,2
SQL語句如下:
with cteCopy as ( select * from [table] where id=5 union all select a.* from [table] a join cteCopy b on a.id=b.parentID and a.IsDel=0 ) SELECT STUFF(( SELECT ',' +convert(VARCHAR, id) FROM cteCopy where id<>5 FOR XML PATH('')), 1, 1, '') AS ids
返回
ids |
1,2 |