使用 php 对 mysql 记录进行高级/技术排序

我在尝试确定如何对 mysql 数据库中的某些数据进行排序时遇到问题。我有一个内容项目表,记录包含一个 id(自动递增)、一个 parent_id(因此一个页面可以是另一个页面的子页面)、url 和标题。


我想以嵌套列表样式对数据进行排序,其中主要的非子页面是第一级,并且那些以该页面 id 作为父 id 的页面列在其下方。这里有没有特殊的命令可以使用,还是需要按php排序?


所以,作为一个例子:


id   |  parent_id  | title

---------------------------

1       0            Page 1

3       0            Page 3

6       1            Page 6

7       3            Page 7

该列表应如下所示:


Page 1

    Page 6

    Any others with parent id of 1

Page 3

    Page 7

    Any others with parent id of 3


子衿沉夜
浏览 169回答 2
2回答

泛舟湖上清波郎朗

对于没有任何 JOIN 的具有 2 个嵌套级别的表:SELECT * FROM table ORDER BY IF(parent_id = 0, id, parent_id), id

元芳怎么了

将表与自身连接,将父 ID 与 ID 连接。SELECT parent.title AS parent_page, child.title AS child_pageFROM yourTable AS parentJOIN yourTable AS child ON child.parent_id = parent.idORDER BY parent.id在您的 PHP 循环中,每当它更改时打印父页面标题。请参阅如何在 PHP 中列出与 while 循环相同的 id 数据?对于该循环的结构。
打开App,查看更多内容
随时随地看视频慕课网APP