SQL查询根据同一个表中的相关id获取记录

时间:2012-10-09 06:43:42

标签: sql sql-server

表格结构:

enter image description here

我试过这个:

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的所有记录。

1 个答案:

答案 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;

Live Demo