SqlServer同一个表查询无限层级的数据

创建table表,表结构如下,Id,ParentId,username,levels查询指定条件的所有下级或者所有上级,用WITH AS,UNION ALL 查询

1 CREATE TABLE [dbo].[table] (
2 [Id] int NOT NULL IDENTITY(1,1) ,
3 [UserName] varchar(20) NULL ,
4 [Levels] int NULL ,
5 [Parentid] int NULL
6 )

插入以下数据进行测试

查询parentid=4的所有下级

1 WITH T
2 AS( 
3      SELECT * FROM table WHERE ParentId=4
4      UNION ALL 
5      SELECT tab.*  FROM table tab INNER JOIN T ON tab.ParentId=T.Id  
6   ) 
7 SELECT * FROM T

 

查询结果如下

 

查询Id=8的所有上级

1 WITH T
2 AS( 
3     SELECT * FROM table WHERE Id=8
4     UNION ALL 
5     SELECT tab.* FROM table tab INNER JOIN T ON tab.Id=T.ParentId  
6   ) 
7 SELECT * FROM T

 

查询结果如下

posted on 2020-11-24 10:51  龟仙人没有龟  阅读(665)  评论(0编辑  收藏  举报

导航