1. 程式人生 > >T-SQL查詢:WITH AS 遞歸計算某部門的所有上級機構或下級機構

T-SQL查詢:WITH AS 遞歸計算某部門的所有上級機構或下級機構

area t-sql union sel lec where 需要 _id with as

drop table #Area;
 
CREATE TABLE #Area
(
    id INT  NOT NULL,
    city_name NVARCHAR(100) NOT NULL,
    parent_id INT NOT NULL
)
INSERT INTo #Area(id,city_name,parent_id) VALUES(1,‘江蘇省‘,0)
INSERT INTo #Area(id,city_name,parent_id) VALUES(2,‘常州市‘,1)
INSERT INTo #Area(id,city_name,parent_id) VALUES(3,‘天寧區‘,2)
INSERT INTo #Area(id,city_name,parent_id) VALUES(4,‘新北區‘,2)
INSERT INTo #Area(id,city_name,parent_id) VALUES(5,‘天寧區_1‘,3)
INSERT INTo #Area(id,city_name,parent_id) VALUES(6,‘新北區_1‘,4)
 
-------------------------------------------------
--根據節點ID獲取所有子節點
-------------------------------------------------
SELECT * FROM #Area;
WITH AreaTree AS 
(
    SELECT * from #Area where id = 1--需要查找的節點
    UNION ALL 
    SELECT #Area.* from AreaTree
    JOIN #Area on AreaTree.id = #Area.parent_id
)
SELECT * FROM AreaTree;
-------------------------------------------------
--根據節點ID獲取所有父節點
-------------------------------------------------
SELECT * FROM #Area;
with AreaTree AS
(
    SELECT * from #Area where Id=6 --需要查找的節點
    UNION ALL 
    SELECT #Area.* from AreaTree
    JOIN #Area on AreaTree.parent_id= #Area.Id
)
SELECT * from AreaTree;

  

T-SQL查詢:WITH AS 遞歸計算某部門的所有上級機構或下級機構