如何选择父ID

时间:2010-11-15 12:01:06

标签: sql

我有这样的结构表。

ElementId |  ParentId
-------------------
1         | NULL
2         | 1
3         | 2
4         | 3

假设当前元素具有Id 4.我想选择所有父ID。 结果应为: 3,2,1

我怎么做? DB是MSSQL

3 个答案:

答案 0 :(得分:2)

您可以对此使用递归查询:http://msdn.microsoft.com/en-us/library/aa175801(SQL.80).aspx

你可以像这样使用它:

with Hierachy(ElementID, ParentID, Level) as (
    select ElementID, ParentID, 0 as Level
    from table t
    where t.ElementID = X -- insert parameter here
    union all
    select t.ElementID, t.ParentID, th.Level + 1
    from table t
    inner join Hierachy th
    on t.ParentId = th.ElementID
)
select ElementID, ParentID
from Hierachy
where Level > 0

答案 1 :(得分:1)

我认为最简单的做法如下:

while parent != NULL
    get parent of current element

我无法想到在纯SQL中以任何方式执行此操作都不会导致大型数据库出现问题。

答案 2 :(得分:-1)

如果你想要纯sql试试:

select ParentId from myTable Desc

可以在mysql中运行...您可能需要修改Desc(按降序排序)部分