1
我想知道如果有人能幫助我。TSQL ParentID遞歸SP
我有一個表,它是這樣的...
ID ParentID
1 0
2 1
3 2
4 3
5 4
我想要做的是寫一個遞歸TSQL語句,將得到所有我的父母的ID。例如,如果我將5傳入存儲過程,它將返回4,3,2,1。
有誰知道如何做到這一點?如果有人能幫助,我們將非常感激!
我想知道如果有人能幫助我。TSQL ParentID遞歸SP
我有一個表,它是這樣的...
ID ParentID
1 0
2 1
3 2
4 3
5 4
我想要做的是寫一個遞歸TSQL語句,將得到所有我的父母的ID。例如,如果我將5傳入存儲過程,它將返回4,3,2,1。
有誰知道如何做到這一點?如果有人能幫助,我們將非常感激!
這是一個例子,如何實現這一目標使用遞歸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
不是真的一個答案,但也許是一個新方向的暗示。如果您使用的是SQL 2008,請查看HierarchyId數據類型。它是爲此而構建的。它支持檢索所有的孩子,父母,兄弟姐妹等:http://msdn.microsoft.com/en-us/magazine/cc794278.aspx – NotMe