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

Ash*_*rma 4 sql sql-server

表结构:

在此输入图像描述

我试过这个:

select Id, Name from Color where ParentId=4
UNION
select Id, Name from Color where ParentId=(select Id from Color where ParentId=4)
Run Code Online (Sandbox Code Playgroud)

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

例如:对于ParentId = 4,有两条记录; 名称蓝色和红色他们的Id分别是6和10.现在,我需要获取Id 6和10的所有记录.

Mah*_*mal 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;
Run Code Online (Sandbox Code Playgroud)

现场演示