首页 >数据库 >mysql教程 >SQL Server 中的递归自连接如何检索分层数据?

SQL Server 中的递归自连接如何检索分层数据?

Patricia Arquette
Patricia Arquette原创
2025-01-15 12:15:47594浏览

How Can Recursive Self-Joins in SQL Server Retrieve Hierarchical Data?

SQL Server 递归自连接:导航分层数据

SQL Server 的递归自连接提供了一种遍历分层数据结构的强大方法。这在处理单个表中的父子关系时尤其有价值。

考虑一个包含以下列的 Categories 表格:

  • Id
  • Name
  • ParentId

递归自连接允许我们提取该表内的层次关系,包括嵌套类别级别。

示例:

想象一下这个类别层次结构:

<code>- Business Laptops
    - Gaming Laptops
        - Ultrabooks
            - Compact Ultrabooks</code>

要使用递归公用表表达式 (CTE) 检索“商用笔记本电脑”及其父类别,我们可以使用以下查询:

<code class="language-sql">;WITH CTE AS (
    SELECT id, name, name AS path, parent_id
    FROM Categories
    WHERE parent_id IS NULL
    UNION ALL
    SELECT t.id, t.name, CAST(cte.path + ',' + t.name AS VARCHAR(100)), t.parent_id
    FROM Categories t
    INNER JOIN CTE ON t.parent_id = CTE.id
)
SELECT id, name, path
FROM CTE
WHERE name = 'Business Laptops';</code>

此查询的输出将是:

<code>id      name                path
1       Business Laptops      Business Laptops</code>

递归自连接提供了一种有效的方法来管理和检索复杂层次结构中的数据,跨多个级别访问相关信息。

以上是SQL Server 中的递归自连接如何检索分层数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn