sql获取层次结构基表的最新节点?

时间:2010-12-10 04:04:41

标签: sql mysql

我有这样的表格数据

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怎么办?这意味着我可以通过父ID进行分组。我只是担心将来需要获取根节点时会出现问题(意思是,我不再只是查询WHERE parent_id = 0;我必须做WHERE id = parent_id)

1 个答案:

答案 0 :(得分:0)

假设具有较高ID的节点是“稍后”,那么它只是:

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

对于根节点,肯定必须首先插入,因此会有一个已知的id,如1或0,或者可能有一个特殊的父id,例如NULL或-1。