使用SQLSERVER 2005/2008 递归CTE查询树型结构的方法

2016-02-19 09:22 47 1 收藏

想不想get新技能酷炫一下,今天图老师小编就跟大家分享个简单的使用SQLSERVER 2005/2008 递归CTE查询树型结构的方法教程,一起来看看吧!超容易上手~

【 tulaoshi.com - 编程语言 】

下面是一个简单的Family Tree 示例:
代码如下:

DECLARE @TT TABLE (ID int,Relation varchar(25),Name varchar(25),ParentID int)
INSERT @TT SELECT 1,' Great GrandFather' , 'Thomas Bishop', null UNION ALL
SELECT 2,'Grand Mom', 'Elian Thomas Wilson' , 1 UNION ALL
SELECT 3, 'Dad', 'James Wilson',2 UNION ALL
SELECT 4, 'Uncle', 'Michael Wilson', 2 UNION ALL
SELECT 5, 'Aunt', 'Nancy Manor', 2 UNION ALL
SELECT 6, 'Grand Uncle', 'Michael Bishop', 1 UNION ALL
SELECT 7, 'Brother', 'David James Wilson',3 UNION ALL
SELECT 8, 'Sister', 'Michelle Clark', 3 UNION ALL
SELECT 9, 'Brother', 'Robert James Wilson', 3 UNION ALL
SELECT 10, 'Me', 'Steve James Wilson', 3

----------Query---------------------------------------
;WITH FamilyTree
AS(
SELECT *, CAST(NULL AS VARCHAR(25)) AS ParentName, 0 AS Generation FROM @TT
WHERE ParentID IS NULL
UNION ALL
SELECT Fam.*,FamilyTree.Name AS ParentName, Generation + 1 FROM @TT AS Fam
INNER JOIN FamilyTree ON Fam.ParentID = FamilyTree.ID
)SELECT * FROM FamilyTree

Output:

query_result
希望对您有帮助

Author: Petter Liu

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

来源:http://www.tulaoshi.com/n/20160219/1590553.html

延伸阅读
标签: ASP
       树型结构在我们应用程序中还是很常见的,比如文件目录,BBS,权限设置,部门设置等。这些数       据信息都采用层次型结构,而在我们现在的关系型数据库中很难清淅表达。那么要在程序中遇到树型 结构问题该如何处理呢? 最近笔者通过一个ASP权限管理的程序轻松解决了一这问...
标签: Java JAVA基础
  实现论坛树型结构的算法很多,我现在的JSP论坛采用的也是当中的一种:不用递归实现树型结构的算法,现在我将论坛树型结构的具体算法和大家介绍一下,和大家一起交流。   1、演示表的结构: 表名:mybbslist 字段 数据类型 说明 BBSID 自动编号 RootID Int ...
1、你可以用SQLCMD执行交互式动作,如: C:sqlcmdsqlcmd 1 SELECT name from sys.databases 2 GO 你也可以试着键入如下命令,现实服务器列表 1:ServerList SERVERS: WUYZ 1如果想看其他命令的使用,可以键入:Help /? 2、执行SQL脚本文件 你可以在SQLCMD命令上加入参数I来执行SQL脚本文件,例...
1,复制简介 简单的说,复制是获取一个或多个数据库的过程,它系统的针对出入不同数据库的数据,提供基于规则的拷贝机制。 复制分为三种角色, 1,发布服务器 发布服务器可以被看成是源数据库。 2 ,分发服务器 分发数据库针对更改而承担类似某些票据交换所的工作,他是一个特殊的分发数据库,用于对更改进行跟踪,同时也跟踪哪些订阅服务...
数据库测试环境 1. SQL Server 2008 2. MySQL 5.1.36 Database: Test Table: TestTable 创建MySQL 测试表 代码如下: CREATE TABLE `testtable` ( `id` int(11) DEFAULT NULL, `name` varchar(50) DEFAULT NULL, `age` int(11) DEFAULT NULL )   创建Link Server 下面来创建一个与MySQL交互的链接(类似Oracle 的DBLin...

经验教程

81

收藏

87
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部