>假设我在表中有以下结构:
+-------------+----------------+-----------+
| category_id | name | parent_id |
+-------------+----------------+-----------+
| 1 | foo | 0 |
| 2 | bar | 0 |
| 3 | baz | 1 |
| 4 | test | 2 |
| 5 | test1 | 3 |
| 6 | test2 | 5 |
+-------------+----------------+-----------+
有没有人有任何指针来实现以下输出:
foo
bar
foo > baz
bar > test
baz > test1
baz > test 1 > test2
如果有帮助,我愿意更改我的架构,不确定这是否是存储数据的最佳方法?
谢谢
您可以尝试按父级排序,然后按名称排序:
SELECT * FROM category ORDER BY parent_id, name
这将返回根据其级别(父级)按名称排序的所有类别。
也许你想看看嵌套集
嵌套集模型的实现比简单的父子关系要复杂一些,但它有助于解决这样的问题。