0

这是一个树结构的表。

id  parent_id
1   0
2   1
3   8
4   8
5   1
6   8
7   6
8   1
9   2
10  6

我需要通过“广度优先”检索数据。

所以顺序应该是:1→(8→5→2)→(6→4→3)→9→(10→7)

实际上还有另一列可以对相同深度的节点进行排序。8,5,2, 6,4,3, 10,7. 我排除它以简化这种情况。所以相同深度节点的序列 : 8,5,2, 5,8,2 2,5,8... 是可以的。

在此处输入图像描述

4

1 回答 1

1

ORDER BY depth_column_that_you_thought_is_irrelevant ASC如果您不关心层内节点的顺序(在大多数 BFS 使用中您可能不需要),则广度优先搜索顺序就是。如果您确实关心让具有相同父母的人一起去,那么ORDER BY depth, parent_id。您没有给出姐妹节点的任何明确优先级,因此无法帮助您。

此外,您的图表与您的数据不匹配,或者我无法弄清楚图表中的id: 3, parent_id: 2行如何转换为 3 <- 8 或 9 <- 2。

于 2013-01-08T04:15:04.520 回答