【发布时间】:2017-08-28 12:26:22
【问题描述】:
我有这个 MySql 表(默认按 id 排序):
id subid value
1 0 value 1
2 0 value 2
3 1 sub of 1
4 1 sub of 1
5 2 sub of 2
6 2 sub of 2
7 5 sub of 5
我需要一个返回列表的查询,按 id 和 subid 排序,如下所示:
1 0 value 1
3 1 sub of 1
4 1 sub of 1
2 0 value 2
5 2 sub of 2
7 5 sub of 5
6 2 sub of 2
因此,一个 id 的 subs 直接位于该 id 行的下方(在此示例中,id1 有 2 个 subs,它们直接出现在 id1 的行下方。id7 的 subid 为 5,因此直接出现在 id5 的行下方
subs 可以无限深
我怎样才能得到这个结果?
谢谢!
【问题讨论】:
-
你试过这样的吗?
ORDER BY ID,SUBID -
是的,试过了,它返回的列表和原来的一样:-(
-
对 mySQL 的层次结构进行排序的 GOOGLE 搜索返回:stackoverflow.com/questions/14890204/order-sql-tree-hierarchy 和 stackoverflow.com/questions/15852045/… 和 stackoverflow.com/questions/10000643/… 其中大部分似乎是可行的。
-
在仔细检查了第二个和第三个选项之后,我认为它们不会起作用。第一个选项似乎是最有希望的;但需要结构变化。我能看到这样做的唯一方法是使用递归函数将路径传递到下一级,直到定义完整路径。但我认为那会很昂贵;所以存储路径似乎是最有效的解决方案。