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中文网其他相关文章!