start with 子句用于规定分级结构中的根行
connect by 子句用于规定分级结构中父行与子行之间的关系
nocycle 参数用于指定oracle在分级结构存在回路的情况时依然返回结构行
在分级查询中在条件(指定父子关系)中的一个表达式(父或子)必须由prior操作符进行限定用来指定父子关系中的父
PRIOR expr = expr
or
expr = PRIOR expr
关于prior我个人的理解假设有关系 R(id pid)有如下数据
IDPID
select * from R start with id = connect by prior id = pid;
在这个查询中prior在列id前我们根据表中数据构建一个有向图从prior限定的列指向另外一列即id指向pid
那么这个查询的意义就是寻找图中哪些结点可以到达结点通过图我们可以看到结果应为以及自己
SQL查询的结果为
ID PID
rows selected
prior限定的列如果和子句start with规定的列相同表示哪些结点可以到达start with规定的列
prior限定的列如果和子句start with规定的列不同表示通过start with规定的列可以到达哪些结点
SYS_CONNECT_BY_PATH(columnchar)中的columu与prior限定的列相同时即表示路径
当分级结构中存在回路时可以配合查询伪列 level connect_by_isleaf connect_by_root等获得更多分级结构的信息