【问题标题】:ORDER BY previous element id = parent_idORDER BY 前一个元素 id = parent_id
【发布时间】: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


【解决方案1】:

订购者:

'parent_id = 0 desc, COALESCE(id, parent_id), id'

似乎已经解决了我的情况。

【讨论】:

    猜你喜欢
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多