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 newDb.id ,newDb.name ,newDb.parentId
FROM newDb AS newDb WITH (NOLOCK)
ORDER BY newDb.parentId DESC
结果
我只是一棵树