SQL SERVER 2008 CTE生成結點的FullPath_Mssql數據庫教程

      編輯Tag賺U幣
      教程Tag:CTEFullPath添加

      推薦:Sql server 2008 express遠程登錄實例設置 圖文教程
      Sql server 2008 express遠程登錄實例設置 圖文教程,需要的朋友可以參考下。

      好的,現在來看如何生成FullPath:
      復制代碼 代碼如下:www.wf0088.com

      DECLARE @tbl TABLE
      (
      Id int
      ,ParentId int
      )
      INSERT INTO @tbl
      ( Id, ParentId )
      VALUES ( 0, NULL )
      , ( 8, 0 )
      , ( 12, 8 )
      , ( 16, 12 )
      , ( 17, 16 )
      , ( 18, 17 )
      , ( 19, 17 )

      WITH abcd
      AS (
      -- anchor
      SELECT id
      ,ParentID
      ,CAST(id AS VARCHAR(100)) AS [Path]
      FROM @tbl
      WHERE ParentId IS NULL
      UNION ALL
      --recursive member
      SELECT t.id
      ,t.ParentID
      ,CAST(a.[Path] + ',' + CAST( t.ID AS VARCHAR(100)) AS varchar(100)) AS [Path]
      FROM @tbl AS t
      JOIN abcd AS a ON t.ParentId = a.id
      )
      SELECT Id ,ParentID ,[Path]
      FROM abcd
      WHERE Id NOT IN ( SELECT ParentId
      FROM @tbl
      WHERE ParentId IS NOT NULL )

      返回:
      Id ParentID Path
      ----------- ----------- ----------------------
      18 17 0,8,12,16,17,18
      19 17 0,8,12,16,17,19
      就這么簡單,實際上有Sql server 2008中HierarchyType 也能很好的解決這個問題。我將在后面寫一些關于HierarchyType的Post.

      希望這篇POST對您有幫助。

      Author Peter Liu

      分享:如何把Excel數據導入到SQL2008數據庫的實例方法
      最近想練習一下批量插入數據,所以從網上找了一下資料,做了一個怎么把Excel文件數據導入到數據庫。

      來源:模板無憂//所屬分類:Mssql數據庫教程/更新時間:2013-04-23
      相關Mssql數據庫教程