SQL 递归

题目:

生活中,常遇到ID和ParentID引用问题。

比如当前文件夹下的所有文件夹。

 

分析:

核心思想递归当前文件下的子文件夹。

 

脚本:

 

技术分享
CREATE TABLE Dept(
    [id] int NULL,
    [parentid] int NULL,
    [name] nvarchar(50) NULL,
    [type] int NULL
)
创建表

 Type:0-文件夹;1-文件

 

技术分享插入
INSERT INTO [dbo].[Dept]([id],[parentid],[name],[type])VALUES(1,0,dept1,1);
INSERT INTO [dbo].[Dept]([id],[parentid],[name],[type])VALUES(2,0,dept2,1);
INSERT INTO [dbo].[Dept]([id],[parentid],[name],[type])VALUES(3,1,dept3.1,1);
INSERT INTO [dbo].[Dept]([id],[parentid],[name],[type])VALUES(4,1,dept4.1,1);
INSERT INTO [dbo].[Dept]([id],[parentid],[name],[type])VALUES(5,2,dept5.2,1);
INSERT INTO [dbo].[Dept]([id],[parentid],[name],[type])VALUES(6,3,dept6.3,1);
INSERT INTO [dbo].[Dept]([id],[parentid],[name],[type])VALUES(7,3,dept7.3,1);
INSERT INTO [dbo].[Dept]([id],[parentid],[name],[type])VALUES(8,1,dept8.1,0);
INSERT INTO [dbo].[Dept]([id],[parentid],[name],[type])VALUES(9,3,dept9.3,0);
INSERT INTO [dbo].[Dept]([id],[parentid],[name],[type])VALUES(10,1,dept10.1,0);
数据

 

技术分享
declare @deptid int
set @deptid=3;

with depts as
(
select * from Dept where id =@deptid
union all
select A.* 
from Dept A inner join depts B
on A.parentid=b.id --and a.[type]=1
)
select * from depts order by parentid, id, type
查询脚本

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。