4

表结构:

在此处输入图像描述

我试过这个:

select Id, Name from Color where ParentId=4
UNION
select Id, Name from Color where ParentId=(select Id from Color where ParentId=4)

在这种情况下,上述方法是静态的,我必须知道所有 Id。我正在寻找一些动态方法,因为我只有 Color 的 ParentId 值。

例如:对于 ParentId=4 有两条记录;命名蓝色和红色,它们的 ID 分别为 6 和 10。现在在这里,我需要获取 ID 为 6 和 10 的所有记录。

4

1 回答 1

6

试试这个:

;WITH cte
AS
(
    SELECT Id, Name, ParentId  
    FROM Color 
    WHERE ParentId = @parentIdValue
    UNION ALL
    SELECT c2.Id, c2.Name, c2.ParentId  
    FROM cte c1
    INNER JOIN Color c2 ON c2.ParentId = c1.Id
)
SELECT * FROM cte;

现场演示

于 2012-10-09T07:00:18.277 回答