我必须管理我不是一个SQL专家,也许这个查询非常简单,但我无法编写它。基本上,所有页面都使用邻接列表模型(我也在跟踪深度):
+----+---------------+-------------------+-----------+
| id | title | level | position | parent_id |
+----+---------------+-------+-----------+-----------+
| 1 | Home | 0 | 0 | null |
+----+---------------+-------+-----------+-----------+
| 2 | Resources | 0 | 1 | null |
+----+---------------+-------+-----------+-----------+
| 3 | About | 0 | 2 | null |
+----+---------------+-------+-----------+-----------+
| 4 | Documents | 1 | 0 | 2 |
+----+---------------+-------+-----------+-----------+
| 5 | Tutorials | 1 | 1 | 2 |
+----+---------------+-------+-----------+-----------+请注意,位置在同一父级中是唯一的。
我想要实现的是按父类排序并定位,但是父类别应该在其子级之前列出。这是显而易见的,而且不起作用:
SELECT * FROM PAGE p
ORDER BY parent_id, position结果是第一张表。我需要的是:
+----+---------------+-------------------+-----------+
| id | title | level | position | parent_id |
+----+---------------+-------+-----------+-----------+
| 1 | Home | 0 | 0 | null |
+----+---------------+-------+-----------+-----------+
| 2 | Resources | 0 | 1 | null | // Parent of 4, 5
+----+---------------+-------+-----------+-----------+
| 4 | Documents | 1 | 0 | 2 | // Child of Resource
+----+---------------+-------+-----------+-----------+
| 5 | Tutorials | 1 | 1 | 2 | // Child of Resource
+----+---------------+-------+-----------+-----------+
| 3 | About | 0 | 2 | null |
+----+---------------+-------+-----------+-----------+这在MySQL中是可能的,不支持递归吗?
发布于 2013-11-09 22:05:35
当可以限制查询时,可以使用自联接。或者尝试一个嵌套的集合或者赛尔科树。
https://stackoverflow.com/questions/19883013
复制相似问题