0%

【SQL】遞迴

有張表格如下,Parent欄位代表他的父層的RegionID,所以裡面包含所有縣市、行政區、鄉里等資料,那要如何用SQL遞迴的方式把台北市用階層的方式表列出來呢?
台北市 > 信義區、大安區、中正區…. > 港華里、老泉里…..

用CTE的寫法可以解決,把台北市當做茅點,然後Join自己即可達到遞迴的效果

1
2
3
4
5
6
7
8
9
10
11
12
13
with 遞迴 as(
------茅點 start-------
SELECT RegionID , Name
FROM Region a
WHERE RegionID = 1 --台北市
------茅點 end ---------
union all
select b.RegionID , b.name
from Region b
join 遞迴 on b.Parent = 遞迴.RegionID
)
select * from 遞迴

搜尋出來的結果