我有這樣的結構表。如何選擇父母ID
ElementId | ParentId
-------------------
1 | NULL
2 | 1
3 | 2
4 | 3
假設當前元素有Id 4.我想選擇所有的父標識符。 結果應該是:3,2,1
我該怎麼辦呢? DB是MSSQL
我有這樣的結構表。如何選擇父母ID
ElementId | ParentId
-------------------
1 | NULL
2 | 1
3 | 2
4 | 3
假設當前元素有Id 4.我想選擇所有的父標識符。 結果應該是:3,2,1
我該怎麼辦呢? DB是MSSQL
您可以使用遞歸查詢此: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
我想這可能是最容易做到以下幾點:
while parent != NULL
get parent of current element
我想不出在普通的SQL這樣做的任何方式,不會對較大的數據庫引起的問題。
:
select ParentId from myTable Desc
,將在MySQL工作...您可能需要修改Desc(按降序排列)部分
它切換p這裏參考t.ParentId = th.ElementID – 2010-11-15 12:48:30