国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL SERVER 2008 CTE生成結點的FullPath

2024-08-31 01:00:53
字體:
來源:轉載
供稿:網友
好的,現在來看如何生成FullPath:

復制代碼 代碼如下:


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
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 彰化县| 诏安县| 盐津县| 江陵县| 白朗县| 梁山县| 黄梅县| 深水埗区| 临清市| 北川| 泗阳县| 鹤庆县| 观塘区| 萍乡市| 巴南区| 仁寿县| 本溪市| 三江| 吉木乃县| 盐亭县| 东安县| 定州市| 宜川县| 介休市| 忻城县| 五峰| 迁安市| 清丰县| 南汇区| 彭阳县| 香河县| 十堰市| 龙游县| 从化市| 进贤县| 喀喇| 青冈县| 孙吴县| 普宁市| 突泉县| 元谋县|