SQL递归查询代码(cte应用),供大家学习参考。
使用了with Cte技术。
--非指定结点
WITH temp(ID, EmpName, ParentID, Level)
AS (
SELECT d.id, d.EmpName, d.parentid, 0 AS Level
FROM dbo.CTETest AS d
WHERE d.parentid IS NULL
--上面这个查询是初始化用的,所以只需要查询最顶一层的结点
UNION ALL
SELECT d.id, d.EmpName, d.parentid, Level + 1
FROM dbo.CTETest d
JOIN temp AS childD
ON d.parentID = childD.id
--上面这个查询才是用来递归的,它与CTE上一次的结果JOIN,得到上一次结果的子层结点
)
SELECT ID,EmpName,parentID,Level FROM temp where id = xxx
网上找的例子,正确性未测试,请朋友们实测吧。