【发布时间】:2011-08-13 08:40:03
【问题描述】:
我目前正在处理一个结构如下的数据库表:
______________________________
| id | content | next_id |
|------|-----------|-----------|
| 1 | (value) | 4 |
| 2 | (value) | 1 |
| 3 | (value) | (NULL) |
| 4 | (value) | 3 |
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
next_id 字段的值定义了应该跟随它的数据行的 ID。 NULL 的值表示后面没有行。
有没有一种方法可以查询数据库,以便使用此方法对结果行进行排序?例如,在我上面给出的情况下,应该按顺序返回行,以便 id 按以下顺序排列:2、1、4、3。我正在寻找一种解决方案,无论此序列中的行数如何,都可以做到这一点。
我知道可以在从数据库中检索结果后重新排序(使用我正在使用的编程语言),但我希望有一种方法可以在 SQL 中完成。
【问题讨论】:
-
这非常类似于无限层深度的嵌套。
-
使用过程或您的编程语言。
-
在我看来您需要将数据结构转换为使用嵌套集,然后这种查询会更容易。
-
存在什么样的约束?即,我可以拥有
(1,2)和(2,1)吗?如果我有(1,4)、(4,2)和(2,1),会发生什么? -
@Thomas 您可以假设数据库中的数据格式正确;即,不应有您在示例中给出的循环引用。