MSSQL
同一張資料表在不知道有多少階層成狀態下可以使用遞迴將資料塞選出來
遞迴範例
原始資料
SELECT
rs.id
,rs.name
,rs.parentId
FROM testRepairSort AS rs WITH (NOLOCK)
WHERE 1 = 1
遞迴開始
--遞迴範例
WITH newDb --自定義新表名稱
AS(
SELECT rs.id ,rs.name ,rs.parentId
FROM testRepairSort AS rs WITH (NOLOCK)
WHERE (rs.id = 8) --查詢條件
UNION ALL --連接
SELECT rs2.id ,rs2.name ,rs2.parentId
FROM testRepairSort AS rs2 WITH (NOLOCK) --完整資訊表
INNER JOIN newDb AS newDb --遞迴關聯資料表
ON rs2.id = newDb.parentId --遞迴關聯欄位
)
--顯示資訊
SELECT DISTINCT newDb.id ,newDb.name ,newDb.parentId
FROM newDb AS newDb WITH (NOLOCK)
ORDER BY newDb.parentId DESC
結果
我只是一棵樹