广度首先在MYSQL中搜索查询

时间:2013-01-08 04:10:20

标签: mysql breadth-first-search

这是树形结构的表格。

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,26,4,310,7。 我将其排除以简化此案例。所以相同深度节点的序列:8,5,25,8,2 2,5,8 ......没问题。

enter image description here

1 个答案:

答案 0 :(得分: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。