我有一个数据库的信息需要以一种奇怪的方式排序。我下面有一个非常简单的版本。
我需要按照NEXTPAGEID列指示的顺序使用PHP输出它们。有人告诉我只要循环遍历这些值,但我就是想不出像这样循环遍历它们的正确方法。

ID: 1; NEXTPAGEID: 3
ID: 3; NEXTPAGEID: 118
ID: 9; NEXTPAGEID: 10
ID: 10; NEXTPAGEID: 515
ID: 11; NEXTPAGEID: 12
ID: 118; NEXTPAGEID: 9

所以我真正需要的顺序是
ID: 1, 3, 118, 9, 10, 515, (whatever the NEXTPAGEID of 515 is)

等等。

最佳答案

这需要对MySQL缺少的递归查询的支持。
你可以这样模仿它:

SELECT @r := 1, @c := 0 -- the first id

SELECT  t.*
FROM    (
        SELECT  @r AS _current_id,
                @r :=
                (
                SELECT  nextpageid
                FROM    mytable
                WHERE   id = _current_id
                ) AS _next_id,
                @c := @c + 1 AS _orderer
        FROM    mytable t
        ) q
JOIN    mytable t
ON      t.id = q._current_id
ORDER BY
        _orderer

关于php - “按NextPageID排列订单”字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4854340/

10-11 00:10