Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何根据层次结构级别对SQL请求的结果排序_Java_Sql - Fatal编程技术网

Java 如何根据层次结构级别对SQL请求的结果排序

Java 如何根据层次结构级别对SQL请求的结果排序,java,sql,Java,Sql,我在Java应用程序的上下文中使用SQLIte保存一些数据。我的一个SQL表具有以下结构 CREATE TABLE containers (ID INT PRIMARY KEY, NAME TEXT, PARENT_ID INT) 我需要检索按层次结构级别排序的所有容器。也就是说,我首先需要所有没有父容器的容器(parent_ID==-1),然后是具有1个祖先的容器,然后是具有2个祖先的容器,等等 对于下面这样的SQL请求,是否有任何方法可以做到这一点,以便以这种方式对ResultSet对象进

我在Java应用程序的上下文中使用SQLIte保存一些数据。我的一个SQL表具有以下结构

CREATE TABLE containers (ID INT PRIMARY KEY, NAME TEXT, PARENT_ID INT)
我需要检索按层次结构级别排序的所有容器。也就是说,我首先需要所有没有父容器的容器(parent_ID==-1),然后是具有1个祖先的容器,然后是具有2个祖先的容器,等等

对于下面这样的SQL请求,是否有任何方法可以做到这一点,以便以这种方式对
ResultSet
对象进行排序

SELECT * from container ORDER BY (**"What to put here ???"**)

编辑我知道我以后可以用Java来做,但我对这个解决方案不感兴趣。

没有一种方法可以直接用标准SQL实现这一点。Oracle具有“start with”、“connect by”语法,并通过“level”支持它


或者,如果您可以重新建模数据,则可以使用嵌套集:

父id引用表的外观。它是同一个表+1表示嵌套集。有几种方法可以处理在SQL表中存储层次结构和树信息;每种方法都要求您提前进行一些设计,并进行权衡以实现您想要的