【发布时间】:2015-05-26 11:04:17
【问题描述】:
我正在尝试构建一个项目的链表,其中第一个项目的 parent_id = 0,而其他项目应按最后一个元素的 id 与其 parent_id 的关系排序。
这是预期的结果:
|编号 | parent_id | |----|------------| | 9 | 0 | | 2 | 9 | | 3 | 2 | | 14 | 3 | | 5 | 14 |我该如何做这种 ORDER BY 子句?目前我在
parent_id = 0 desc, parent_id desc
但是这样的输出当然是错误的,因为它不依赖于最后一个ID,它只是在运行parent_id的desc排序:
|编号 | parent_id | |----|------------| | 9 | 0 | | 5 | 14 | | 2 | 9 | | 14 | 3 | | 3 | 2 |提前致谢。
【问题讨论】:
-
这是帖子的第一个表格 - 我在上面添加了注释,这样就不那么混乱了。谢谢。
-
没有。现在更混乱了。为了推断输出,查看输入很有用。
-
我当前的尝试 - parent_id = 0 desc, COALESCE(id, parent_id), id 似乎适用于这组结果。为了确定,我正在尝试匹配一些边缘情况。你觉得还好吗?
-
您可能需要递归查询:stackoverflow.com/questions/16513418/…
-
您正在寻找相当于 Oracle 的
CONNECT BY PRIOR的 MySQL。这个答案会对你有所帮助。 stackoverflow.com/questions/19132608/…
标签: mysql sql parent-child sql-order-by