[經典SQL語句]根據父級ID查找所有子級ID,並將所有ID用逗號隔開返回


樹形表結構:

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM