1

我有一个包含以下列的表格 -

  1. ID(设备的 ID)
  2. DeviceName(设备名称)
  3. ParentID(父设备的ID)

根据表格,我的数据存储在树结构中,即一个设备包含多个其他设备,这些设备又包含多个设备。

我需要的是获取给定设备 ID 下所有设备的 ID。我需要适当的 SQL 查询来获取父节点下的所有子节点(包括它自己的子节点)。

例如。假设 A 是具有子 B1、B2 的顶部节点。

B1 包含 C1、C2 孩子,而 B2 包含 C3、C4。

同样,C1 包含 D1、D2 .... 等等。

我需要的是获得所有 B1,B2,C1,C2,C3,C4,D1,D2,.... 如果提供了 A。

感谢您分享您的时间。

4

1 回答 1

6

为此,您需要使用递归 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
于 2012-07-11T15:18:20.250 回答