首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TSQL ParentID递归SP

TSQL ParentID递归SP
EN

Stack Overflow用户
提问于 2011-06-27 10:38:27
回答 2查看 1.3K关注 0票数 1

我想知道有没有人能帮我。

我有一张桌子是这样的。

代码语言:javascript
复制
ID     ParentID
1      0       
2      1
3      2
4      3
5      4      

我想要做的是编写一个递归的TSQL语句来获取我所有的父母ID,例如,如果我将5传入存储过程,它将返回4,3,2,1。

有人知道怎么做吗?如果有人能帮上忙,我将不胜感激!

EN

回答 2

Stack Overflow用户

发布于 2011-06-27 15:59:01

这是一个如何使用递归CTE实现这一点的示例:

代码语言:javascript
复制
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

代码语言:javascript
复制
    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
票数 2
EN

Stack Overflow用户

发布于 2011-06-27 12:10:49

使用递归公用表表达式:

http://msdn.microsoft.com/en-us/library/ms186243.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6488130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档