我有一个表,它表示一个链表
id | parent
1 | 1
2 | 1
3 | 2
4 | 3
...
我知道一个事实,mysql没有内置的查询树构建功能,但我想知道是否有人使用存储过程来执行这种排序。目前,我正在我的域代码中执行排序,但是由外部系统和性能读取的表在外部系统上是至关重要的,所以我想为它提供一个已经排序的列表,以避免使用其宝贵的CPU周期。
还在设计阶段,欢迎其他建议
MySQL没有像Oracle那样方便的START WITH / CONNECT BY
语法,然而,你可能想看看这个链接,有人试图模仿MySQL中的相同功能。
我已经在2011年10月24日的DBA StackExchange中解决了这个问题:https://dba.stackexchange.com/questions/7147/find-highest-level-of-a-hierarchical-field-with-vs-without-ctes/7161#7161
在我的回答中,我包含了基于该问题的存储过程和示例数据。
试试吧!!