如何为特定子节点使用递归CTE内容?



我在SQL Server中有一个递归CTE查询,它处理获取每个父级和子级值的深度。然而,我只想获得一个特定子节点的全部深度。例如,我拥有的数据看起来像这样,我只想获得c_key等于child的结果,我在表下的初始查询获得所有链接的结果。

我试图在联合选择语句中添加where子句,但这只是返回第0个深度行。

<表类> c_key p_key tbody><<tr>子青少年青少年成人成人老年轻中间中间老

看起来,您应该为连接条件交换列,并根据您的任务条件更改where搜索条件。

WITH cte_data (c_key, p_key, depth) AS
(
SELECT c_key, p_key, 0 AS depth
FROM my_table
WHERE c_key = 'child'
UNION ALL
SELECT c.c_key, c.p_key, o.depth + 1 AS depth
FROM cte_data o
INNER JOIN my_table c ON o.p_key = c.c_key
)
SELECT * 
FROM cte_data
ORDER by depth

最新更新