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