我想知道有没有人能帮我。
我有一张桌子是这样的。
ID ParentID
1 0
2 1
3 2
4 3
5 4 我想要做的是编写一个递归的TSQL语句来获取我所有的父母ID,例如,如果我将5传入存储过程,它将返回4,3,2,1。
有人知道怎么做吗?如果有人能帮上忙,我将不胜感激!
发布于 2011-06-27 15:59:01
这是一个如何使用递归CTE实现这一点的示例:
DECLARE @id INT
SET @id = 5
CREATE TABLE #tmp (id INT , ParentId INT)
INSERT INTO #tmp VALUES(1,0)
INSERT INTO #tmp VALUES(2,1)
INSERT INTO #tmp VALUES(3,2);
INSERT INTO #tmp VALUES(4, 3);
INSERT INTO #tmp VALUES(5,4);
WITH parent AS
(
SELECT id, parentId from #tmp WHERE id = @id
UNION ALL
SELECT t.id, t.parentId FROM parent
INNER JOIN #tmp t ON t.id = parent.parentid
)
SELECT id FROM parent
WHERE id <> @id; --OR
WITH parent AS
(
SELECT tmp1.id, tmp1.parentId from #tmp AS tmp1
INNER JOIN #tmp AS tmp2 ON tmp1.id = tmp2.parentId
WHERE tmp2.id = @id
UNION ALL
SELECT t.id, t.parentId FROM parent
INNER JOIN #tmp t ON t.id = parent.parentid
)
SELECT id FROM parent发布于 2011-06-27 12:10:49
使用递归公用表表达式:
http://msdn.microsoft.com/en-us/library/ms186243.aspx
https://stackoverflow.com/questions/6488130
复制相似问题