表格结构:
我试过这个:
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的所有记录。
答案 0 :(得分: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;