首先是使用表结构
表字段:[Id] ,[StationName] ,[PId] ,[Remark] ,[CreateDate] ,Creator
level字段为层次数据,0,1,2,3
------------------向下查询递归
WITH TempTB( [StationName],Id,Pid,level ) as--TempTB临时表
(
SELECT [StationName],Id,PId,0 level FROM [StationInfos] WHERE Id =3 --设定的基础表
UNION ALL
select a.[StationName],a.Id,a.Pid,(level+1)as level from [StationInfos] a inner join TempTB on a.PId=TempTB.Id --下一个表与临时表做数据链表查询 显示已有的数据(inner)
)
SELECT * from TempTB --显示临时表
说明:
其中
------------------向上的递归
WITH TempTB( [StationName],Id,Pid,level ) as--TempTB临时表
(
SELECT [StationName],Id,PId,0 level FROM [StationInfos] WHERE Id =170 --设定的基础表
UNION ALL
select a.[StationName],a.Id,a.Pid,(level+1)as level from [StationInfos] a inner join TempTB on a.Id=TempTB.Pid --与临时表做数据链表查询 显示已有的数据(inner) ---字段替换即可
)
SELECT * from TempTB --显示临时表