无限层级结构的table1表,Id(主键),ParentId(父级id)查询某个Id的全部下级或全部上级,使用WITH AS,UNION ALL 查询
一、查询Id为1全部的下级code
WITH T
AS(
SELECT * FROM table1 WHERE Id=1
UNION ALL
SELECT a.* FROM table1 a INNER JOIN T ON a.ParentId=T.Id
)
SELECT * FROM T
二、查询Id为88全部的上级blog
WITH T
AS(
SELECT * FROM table1 WHERE Id=88
UNION ALL
SELECT a.*
FROM table1 a INNER JOIN T ON a.Id=T.ParentId
)
SELECT * FROM T
内容来源http://www.javashuo.com/article/p-ukneqnsi-hy.html
将得到的部门路径在一行展示
WITH T
AS(
SELECT * FROM LR_Base_Department WHERE F_DepartmentId='id'
UNION ALL
SELECT a.*
FROM LR_Base_Department a INNER JOIN T ON a.F_DepartmentId =T.F_ParentId
)
SELECT DISTINCT
F_Name= (
STUFF(
(SELECT '-' + F_Name
FROM T
ORDER BY F_EnCode -- 因部门是反的所以进行排序
FOR xml path('')
),1,1,''
)
) FROM T jmu