代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
MSSQL
】
SqlServer父节点与子节点查询及递归
作者:
Dezai.CN
/ 发布于
2012/11/21
/
841
/* 标题:sql server中递归的实现 作者:axin 时间:2012-3-24 */ set nocount on if OBJECT_ID('tb','U') is not null drop table tb go create table tb(ID int,PID INT) insert into tb select 1,0 union all select 2,1 union all select 3,2 union all select 4,3 union ALL select 5,4 union ALL select 6,5 union ALL select 7,6 --自定义函数方式实现父节点查询子节点 if OBJECT_ID('GetChildID') is not null drop function GetChildID go create function GetChildID(@ParentID int) returns @t table(ID int) as begin insert into @t select ID from tb where PID=@ParentID while @@rowcount<>0 begin insert into @t select a.ID from tb as a inner join @t as b on a.PID=b.ID and not exists(select 1 from @t where ID=a.ID) end return end go select * from dbo.GetChildID(1) --自定义函数方式实现子节点查询父节点 if OBJECT_ID('GetParentID') is not null drop function GetParentID go create function GetParentID(@ChildID int) returns @t table(PID int) as begin insert into @t select PID from tb where ID=@ChildID while @@rowcount<>0 begin insert into @t select a.PID from tb as a inner join @t as b on a.ID=b.PID and not exists(select 1 from @t where PID=a.PID) end return end go select * from dbo.GetParentID(3) --公用表表达式实现父节点查询子节点(SqlServer2005+) DECLARE @ParentID int SET @ParentID=1 with CTEGetChild as ( select * from tb where PID=@ParentID UNION ALL (SELECT a.* from tb as a inner join CTEGetChild as b on a.PID=b.ID ) ) SELECT * FROM CTEGetChild --公用表表达式实现子节点查询父节点(SqlServer2005+) DECLARE @ChildID int SET @ChildID=6 DECLARE @CETParentID int select @CETParentID=PID FROM tb where ID=@ChildID with CTEGetParent as ( select * from tb where ID=@CETParentID UNION ALL (SELECT a.* from tb as a inner join CTEGetParent as b on a.ID=b.PID ) ) SELECT * FROM CTEGetParent
试试其它关键字
递归
同语言下
.
SQL查询 多列合并成一行用逗号隔开
.
查看存储过程修改时间,最近执行时间
.
设置手动批量删除数据库相关进程
.
获取某个表中特定字段的所有字符串形式
.
SQL 如何去除重复的字符串
.
怎么去掉一个字段中的重复数据
.
String 去除空格 回车 换行 水平制表符
.
SQL查询和替换含有回车,空格,TAB
.
SQL SERVER 查询每日新增用户数量、次留数量
.
判断两个字符串是否存在相同的内容
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
Dezai.CN
贡献的其它代码
(
4037
)
.
多线程Socket服务器模块
.
生成随机密码
.
清除浮动样式
.
弹出窗口居中
.
抓取url的函数
.
使用base HTTP验证
.
div模拟iframe嵌入效果
.
通过header转向的方法
.
Session操作类
.
执行sqlite输入插入操作后获得自动编号的ID
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3