2010-12-10 62 views
0

我有這樣sql來獲取層次結構基表的最新節點?

id = 1, parent = 0 
id = 2, parent = 1 
id = 3, parent = 1 
id = 4, parent = 1 

id = 5, parent = 0 
id = 6, parent = 5 
id = 7, parent = 5 
id = 8, parent = 5 

id = 9, parent = 0 

現在我想產生這樣一個表中的數據,只有最新的樹 的節點我怎麼能做到這一點?

id = 4, parent = 1 
id = 8, parent = 5 
id =9, parent = 0 

編輯1:如果我設置根節點的parent_id = id,該怎麼辦?這意味着我可以通過父母身份進行分組。我只是擔心,這將導致未來的問題,當我需要得到根節點(這意味着,不再只是查詢WHERE parent_id = 0;我將不得不做WHERE id = parent_id)

+0

MySQL沒有分層功能 – 2010-12-10 04:08:26

+0

是的,但我應該能夠得到使用普通sql的結果,而不使用分層功能吧? – Aman 2010-12-10 05:04:59

回答

0

假設具有較高IDS節點是「後面」,那麼它只是:

select max(id), parent from tree group by parent; 

作爲根節點,肯定有將必須被首先插入,並因此將具有已知的ID,例如1或0 ,或者可以有一個特殊的父母標識,例如NULL或-1。