欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mssql sqlserver with cte表达式(递归)找出最顶值的方法分享

程序员文章站 2023-10-15 17:38:29
摘要: 下文通过递归的方式找出最*部门的方法分享,如下所示: 实验环境:sql server 2008 R2 下文通过cte-with表达式实现递归,获取一个公司的*部门,如下所示 例:部门表 ......

摘要: 下文通过递归的方式找出最*部门的方法分享,如下所示: 实验环境:sql server 2008 r2


下文通过cte-with表达式实现递归,获取一个公司的*部门,如下所示 例:部门表

create table [maomao365.com]
(keyid int ,parentid int,
deptname nvarchar(30))

insert into [maomao365.com]
(keyid,parentid,deptname)
values
(1,0,'总经办'),
(2,0,'it中心'),
(10,1,'销售部'),
(11,1,'售后部'),
(111,11,'售后1'),
(1111,111,'售后1_1'),
(12,1,'市场部'),
(21,2,'运维部'),
(22,2,'开发部')

---例1:获取 售后部keyid=1111所在的*部门
;
with testa( [keyid], [parentid],deptname)
as
(
select keyid, parentid,deptname
from [maomao365.com]
where keyid = 1111
union all
select a.keyid, a.parentid,a.deptname
from [maomao365.com] a
inner join testa on a.[keyid] = testa.[parentid]  --递归
)

select * from testa where parentid=0;


go

truncate table [maomao365.com]
drop  table [maomao365.com]

 



转自:http://www.maomao365.com/?p=7829