我有这样的结构表。
ElementId | ParentId
-------------------
1 | NULL
2 | 1
3 | 2
4 | 3
假设当前元素具有Id 4.我想选择所有父ID。 结果应为: 3,2,1
我怎么做? DB是MSSQL
答案 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(按降序排序)部分