SQL SERVER 2008 CTE生成结点的FullPath
发布时间:2024-01-16 08:04:29
标签: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
0
投稿
猜你喜欢
- 给一个例子 :# -*- coding: utf-8 -*-import matplotlib.pyplot as plt im
- 方法一相对引用:from … import base ,上级目录from … import ba
- 如下所示:a, b, c = 1, 2, 3 # 1.常规 if a>b: &nbs
- 在使用的django做测试平台时,,多多少少都会遇到需要定时任务的功能,比如定时执行任务,检查订单之类的。可能是一段时间,比如每隔 10分钟
- 本文实例讲述了Python打印斐波拉契数列的方法。分享给大家供大家参考。具体实现方法如下:#打印斐波拉契数列#!/usr/bin/pytho
- 1 概述在前面,我们已经对Python学习做了系统的知识梳理(Python思维导图),我们接下来把知识点分节进行细讲。这一节,我们讲解序列。
- 本文实例分析了python删除指定类型(或非指定)的文件用法。分享给大家供大家参考。具体如下:如下,删除目录下非源码文件import os
- 效果图如下:图1(头像图片剪成圆形的,其他为透明)图2(给图片的4个角加椭圆)以前没处理过,处理起来真是有点费力呀。用到的模块:import
- 模块概述如果说模块是按照逻辑来组织 Python 代码的方法, 那么文件便是物理层上组织模块的方法。 因此, **一个文件被看作是一个独立模
- ①差集方法一:if __name__ == '__main__':a_list = [{'a' : 1},
- 1、远程服务器上安装jupyter notebook(配置jupyter_notebook_config.py文件)sudo pip ins
- 说明本文根据https://github.com/liuchengxu/blockchain-tutorial的内容,用python实现的,
- 多线程多线程是个提高程序运行效率的好办法,本来要顺序执行的程序现在可以并行执行,可想而知效率要提高很多。但是多线程也不是能提高所有程序的效率
- 正则表达式正则表达用来匹配字符串正则表达式匹配过程依次拿出表达式和文本中的字符串进行比价如果每个字符都能匹配,则匹配成功;一旦有匹配不成功的
- 字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,
- 这篇文章主要介绍了Pycharm debug调试时带参数过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- Python中的布尔类型Python中的布尔类型(bool)只有两个取值,分别是True和False。bool类型通常用于逻辑判断和条件控制
- 环境搭建python 3.xrequests 包re 包gooey包 (用于可视化)代码import requestsimport reim
- 考虑到数据安全问题,准备把服务器上的数据库迁移到刚刚挂载的云硬盘上,研究一下,这个方法是最靠谱的,分享之!首先建立数据库即将迁移到的目录mk
- 环境准备Python3.5以上Appium Server服务器Android SDK,需要用到adb服务需要依赖Appium-Python-