【问题标题】:SQL Tree Traversal - Mesh nodesSQL 树遍历 - 网格节点
【发布时间】:2014-07-09 19:52:23
【问题描述】:

我的数据库中有以下数据:

Parent      Child
======      =====
1           2
1           3
2           4
2           5
3           6
5           7

我想检索这棵树的所有子孙。我可以将它与 WITH 递归一起使用吗?

输出应该是:

Parent      Child
======      =====
1           2
1           3
1           4
1           5
1           7
2           4
2           5
2           7
3           6
5           7

谢谢。

【问题讨论】:

    标签: sql sql-server hierarchy


    【解决方案1】:
    WITH cte AS (
      SELECT parent, child, 1 AS depth
      FROM MyTable
      UNION ALL
      SELECT t1.parent, t2.child, depth+1
      FROM cte t1
      INNER JOIN @t t2 ON (t2.parent = t1.child)
      WHERE depth < 2
    )
    SELECT parent, child 
    FROM cte
    

    【讨论】:

    • 快到了。我不确定你为什么使用 WHERE 子句。
    • 您要求子孙。 depth &lt; 2 子句将排除曾孙及以后
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多