1、 ORACLE 提供了一种树形结构用来实现层次查询:START WITH :指定查询的根行。CONNECT BY :指定父行和子行的关系。PRIOR : 引用父行。为测试方便,使用如下 Demo:建立数据库表 TreeTableJava 代码CREATE TABLE TreeTable(ID NUMBER PRIMARY KEY, /主键parentID NUMBER, /父节点sortID NUMBER, /排序节点NAME VARCHAR2(10) /子节点名);1.插入数据,初始化结果见图蓝色部分。此时 NAME 字段展现的没有父子的层次关系。通过 parentID 和 ID 建立关联,
2、同一个 parentID 对应多个 ID ,一个 ID 只对应一个parentID。使用层次查询:2.查询一:Java 代码SELECT ID, parentID, sortID, NAME FROM TreeTable START WITH parentID = 0 CONNECT BY PRIOR ID = parentID;通过 parentID 和 ID 建立关联,同一个 parentID 对应多个 ID ,一个 ID 只对应一个parentID。使用层次查询:2.查询一:Java 代码SELECT ID, parentID, sortID, NAME FROM TreeTable S
3、TART WITH parentID = 0 CONNECT BY PRIOR ID = parentID;执行以后的 sortID 和 NAME 字段参照表中的绿色。可以发现 NAME 字段已经实现了树形结构,但是在子节点之间未进行排序。为了实现在同一个父亲下面各个兄弟的排序,ORACLE 提供了 siblings 排序。3.查询二:Java 代码SELECT ID, parentID, sortID, NAME FROM TreeTable START WITH parentID = 0 CONNECT BY PRIOR ID = parentID ORDER siblings BY sortID;执行之后结果参照表中灰色字段 1.2.1 和 1.2.2 排序了。