SQL SERVER 2008 CTE生成结点的FullPath

浅殇栀笙

浅殇栀笙

2016-02-19 10:39

每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐SQL SERVER 2008 CTE生成结点的FullPath,赶紧看过来吧!
好的,现在来看如何生成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
展开更多 50%)
分享

猜你喜欢

SQL SERVER 2008 CTE生成结点的FullPath

编程语言 网络编程
SQL SERVER 2008 CTE生成结点的FullPath

详解SQL Server 2008工具SQL Server Profiler

编程语言 网络编程
详解SQL Server 2008工具SQL Server Profiler

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

SQL Server 2008 存储过程示例

编程语言 网络编程
SQL Server 2008 存储过程示例

SQL Server 2008中的FileStream介绍

编程语言 网络编程
SQL Server 2008中的FileStream介绍

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

SQL Server 2008图文安装教程

编程语言 网络编程
SQL Server 2008图文安装教程

SQL Server 2008中SQL之WaitFor使用介绍

编程语言 网络编程
SQL Server 2008中SQL之WaitFor使用介绍

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

SQL Server 2008中的代码安全(二) DDL触发器与登录触发器

SQL Server 2008中的代码安全(二) DDL触发器与登录触发器

SQLServer 2005系统配置要求官方说明

SQLServer 2005系统配置要求官方说明
下拉加载更多内容 ↓