我有一个包含以下列的表 -
根据表格,我的数据存储在树形结构中,即一个设备包含多个其他设备,这些设备又包含多个设备。
我需要的是获取属于给定设备ID的所有设备的ID。 我需要正确的SQL查询来获取父节点下的所有子节点(包括它自己的子节点)。
对于前。假设A是具有子B1,B2的顶级节点。
B1包含C1,C2子节点,而B2包含C3,C4。
C1再次包含D1,D2 .... 等等。
如果提供A,我需要的是获得所有B1,B2,C1,C2,C3,C4,D1,D2 ...... ....
感谢您分享您的时间。
答案 0 :(得分:6)
您需要使用recursive CTE。
;WITH r as (
SELECT ID
FROM DevicesTable
WHERE ParentID = @someID
UNION ALL
SELECT d.ID
FROM DevicesTable d
INNER JOIN r
ON d.ParentID = r.ID
)
SELECT ID
FROM r