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
投稿
猜你喜欢
- 公司服务器上的ip最少的也有100多个,有时候查到一个站的Ip, 不想通过OA去查,自己就用自己最近学的python知识,结合数据库,编写了
- 在获得SA密码后,往往因为服务器管理者或”前人”将net.exe和net1.exe被限制使用,无法添
- 代码#!/usr/bin/env python#coding=utf-8import random#生成[0, 1)直接随机浮点数print
- 前言最近看到一个题目,看似很简单,其实里面有很深的意义,题目是Python 表达式 i += x 与 i = i + x 等价吗?如果你的回
- 我们有时候为了测试会虚拟创建一些用户,这时候我们可能会通过写sql脚本的形式,但如果没有理清增加用户的注意事项等,往往造出来的数据不能用,比
- Mysql数据库表定期备份的实现0.背景实际开发环境中,前端程序需要在给定时间段内,将数据更新/插入到MySQL指定的库表中。随着数据量的增
- 准备工作1.安装scrapy_redis包,打开cmd工具,执行命令pip install scrapy_redis2.准备好一个没有BUG
- 紧接上篇文章,本篇文章讲vuex ,如何去改变state ,actions的使用,我依然使用了vuex的modules1.设置actions
- 第一步.开启mysql慢查询方式一:修改配置文件Windows:Windows 的配置文件为 my.ini,一般在 MySQL 的安装目录下
- python的pdb调试命令的命令整理及实例一、命令整理pdb调试命令完整命令简写命令描述argsa打印当前函数的参数breakb设置断点c
- 今天遇到一个问题,在同事随意的提示下,用了 itertools.groupby 这个函数。不过这个东西最终还是没用上。问题就是对一个list
- 前言本文讲诉了Vuex的安装、搭建。以及Actions、Mutations、State、Getters的使用,为什么使用mapState、m
- 训练完目标检测模型之后,需要评价其性能,在不同的阈值下的准确度是多少,有没有漏检,在这里基于IoU(Intersection over Un
- 一、ref的基本使用ref的使用<!-- `vm.$refs.p`将会是DOM结点 --><p ref="p&q
- 需要处理原始的音频,所以给服务器的环境安装librosa的包pip install librosa直接pip install librosa
- 本文实例讲述了Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作。分享给大家供大家参考,具体如下:Thinkph
- 前言前文讲述了ppi-cpi和m0-m1-m2的图形绘制,在本文中继续分享一个反映经济活动景气度的指标PMI,在本文中还是采用爬虫的方式获取
- 本文实例总结了JS常见简单正则表达式验证功能。分享给大家供大家参考,具体如下:下面都是一些比较常用简单的验证,像那些特殊的复杂的情况这里不进
- 用字符串就可以轻松地获取每一个文件的名称和扩展名,但不要乱用:<%Function getFilename(text)tex
- 文件名称:ByVal.aspByRef.asp具体代码:<%Sub TestMain()Dim A : A=5Call TestBy(