首頁 > 資料庫 > mysql教程 > SQL Server 中的遞歸自連線如何擷取分層資料?

SQL Server 中的遞歸自連線如何擷取分層資料?

Patricia Arquette
發布: 2025-01-15 12:15:47
原創
624 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板