Sql 当结果集来自自引用表时,是否有一种按层次结构排序的方法?

Sql 当结果集来自自引用表时,是否有一种按层次结构排序的方法?,sql,oracle,self-reference,Sql,Oracle,Self Reference,我们有一个Oracle自引用表来表示类似于以下内容的层次结构: THING --------- ID PARENT_ID NAME SOME_DATA 顶级对象有一个null父ID 我希望能够从此表中进行选择,并按照每一行在层次结构中的位置(从上到下),然后按照名称对数据进行排序,以便数据集: ID PARENT_ID NAME SOME_DATA 1 null top null 2 1 cat null 3 1

我们有一个Oracle自引用表来表示类似于以下内容的层次结构:

THING
---------
ID
PARENT_ID
NAME
SOME_DATA
顶级
对象
有一个
null
父ID

我希望能够从此表中进行选择,并按照每一行在层次结构中的位置(从上到下),然后按照名称对数据进行排序,以便数据集:

ID PARENT_ID  NAME SOME_DATA
1       null   top      null
2          1   cat      null
3          1   dog      null
4          2  frog      null
5          1  bird      null
6          2  fish      null
。。。变成:

ID PARENT_ID  NAME SOME_DATA
1       null   top      null
5          1  bird      null
2          1   cat      null
6          2  fish      null
4          2  frog      null
3          1   dog      null
当我开始输入这个问题时,我很好奇是否有办法在不向表中添加
LEVEL
列的情况下执行此操作,但现在我甚至不确定是否可以通过添加该列来完成


“否”的回答在这里是完全可以接受的,因为我已经接受了一个事实,那就是我必须在Java代码中这样做。

与其使用
级别
并试图以一种巧妙的方式管理结果,不如使用
开始,并
顺序排列兄弟姐妹,以获得您想要的结果:

| ID | PARENT_ID | NAME | SOME_DATA |
-------------------------------------
|  1 |    (null) |  top |    (null) |
|  5 |         1 | bird |    (null) |
|  2 |         1 |  cat |    (null) |
|  6 |         2 | fish |    (null) |
|  4 |         2 | frog |    (null) |
|  3 |         1 |  dog |    (null) |

这将贯穿整个层次结构,从根开始(
parent\u id为NULL
),并对结果进行排序。

Wow。谢谢那是一些严肃的神谕绝地武士的东西。
| ID | PARENT_ID | NAME | SOME_DATA |
-------------------------------------
|  1 |    (null) |  top |    (null) |
|  5 |         1 | bird |    (null) |
|  2 |         1 |  cat |    (null) |
|  6 |         2 | fish |    (null) |
|  4 |         2 | frog |    (null) |
|  3 |         1 |  dog |    (null) |