分层检索

简介: 一、语法 SELECT * FROM SOME_TABLE[ WHERE 条件1 ]CONNECT BY [ 条件2 ] START WITH [ 条件3 ] START WITH:指定阶层的根,也就是递归开始的地方; CONNECT BY [NOCYCLE] [PRIOR]:指定阶层的父/子关系 NOCYCLE:存在CONNECT BY LOOP的纪录时,也返回查询结果。

一、语法

SELECT *
  FROM SOME_TABLE
[ WHERE 条件1 ]
CONNECT BY [ 条件2 ]
  START WITH [ 条件3 ]

START WITH:指定阶层的根,也就是递归开始的地方;

CONNECT BY [NOCYCLE] [PRIOR]:指定阶层的父/子关系

NOCYCLE:存在CONNECT BY LOOP的纪录时,也返回查询结果。

PRIOR:缺省:只能查询到符合条件的起始行,并不进行递归查询;

  CONNECT BY PRIOR expr = expr:前一种写法表示采用自上而下的搜索方式(先找父节点然后找子节点)

  CONNECT BY expr = PRIOR expr:后一种写法表示采用自下而上的搜索方式(先找叶子节点然后找父节点)。 

二、执行原理

在扫描树结构表时,需要依此访问树结构的每个节点,一个节点只能访问一次,其访问的步骤如下:

第一步:从根节点开始;

第二步:访问该节点;

第三步:判断该节点有无未被访问的子节点,若有,则转向它最左侧的未被访问的子节,并执行第二步,否则执行第四步;

第四步:若该节点为根节点,则访问完毕,否则执行第五步;

第五步:返回到该节点的父节点,并执行第三步骤。

总之:扫描整个树结构的过程也即是中序遍历树的过程。

三、相关函数

LEVEL:通过LEVEL虚拟列表示节点层级。

SYS_CONNECT_BY_PATH:函数就是从start with开始的地方开始遍历,并记下其遍历到的节点,start with开始的地方被视为根节点,将遍历到的路径根据函数中的分隔符,组成一个新的字符串,这个功能还是很强大的。

CONNECT_BY_ROOT :函数用来列的前面,记录的是当前节点的根节点的内容。

CONNECT_IS_LEAF:函数用来判断当前节点是否包含下级节点,如果包含的话,说明不是叶子节点,这里返回0;反之,如果不包含下级节点,这里返回1

四、例句

--创建示例表:
CREATE TABLE TBL_TEST (
ID    NUMBER,
NAME  VARCHAR2(100 BYTE),
PID   NUMBER DEFAULT 0
);

--插入测试数据:
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('1','10','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2');

--从Root往树末梢递归:
 SELECT * 
   FROM TBL_TEST 
  START WITH ID = 1 
CONNECT BY PRIOR ID = PID;

--从末梢往树ROOT递归:
 SELECT * 
   FROM TBL_TEST 
  START WITH ID = 5 
CONNECT BY PRIOR PID = ID;
目录
相关文章
|
4月前
|
存储 数据挖掘 机器人
使用LOTR合并检索提高RAG性能
RAG结合了两个关键元素:检索和生成。它首先使用语义搜索等高级技术来浏览大量数据,包括文本、图像、音频和视频。RAG的本质在于它能够检索相关信息,然后作为下一阶段的基础。生成组件利用大型语言模型的能力,解释这些数据块,制作连贯的、类似人类的响应。与传统的生成模型相比,这个过程确保RAG系统可以提供更细致和准确的输出。
134 2
|
6月前
|
安全
统一召回引擎
统一召回引擎
32 0
|
存储 固态存储 索引
搜索和推荐统一存储层的新进展和思考
我们在2017年统一了搜索和推荐场景下的HA3、iGraph、RTP和DII四大引擎的存储层(参见统一之战),帮助它们取得了的更迅速的迁移能力、更快速的数据恢复能力和更丰富的数据召回能力。 最近一年来,我们在统一的存储框架上又做了进一步的演进,下面将分别从架构、Build服务以及存储模型角度介绍我们的新进展和思考。   1.架构   在我们的传统架构(参见统一之战)中,
2694 0
|
1天前
|
存储 人工智能 自然语言处理
基于阿里云向量检索 Milvus 版与 PAI 搭建高效的检索增强生成(RAG)系统
阿里云向量检索 Milvus 版现已无缝集成于阿里云 PAI 平台,一站式赋能用户构建高性能的检索增强生成(RAG)系统。您可以利用 Milvus 作为向量数据的实时存储与检索核心,高效结合 PAI 和 LangChain 技术栈,实现从理论到实践的快速转化,搭建起功能强大的 RAG 解决方案。
基于阿里云向量检索 Milvus 版与 PAI 搭建高效的检索增强生成(RAG)系统
|
4月前
分层模型的优点
分层模型的优点。
58 0
|
5月前
|
算法 前端开发
检索项目中冗余的图片
检索项目中冗余的图片
23 0
|
8月前
|
数据建模
Elasticsearch数据建模实战之祖孙三层数据关系建模以及搜索实战
Elasticsearch数据建模实战之祖孙三层数据关系建模以及搜索实战
|
8月前
|
机器学习/深度学习 存储 自然语言处理
语义检索系统:基于Milvus 搭建召回系统抽取向量进行检索,加速索引
语义检索系统:基于Milvus 搭建召回系统抽取向量进行检索,加速索引
语义检索系统:基于Milvus 搭建召回系统抽取向量进行检索,加速索引
|
自然语言处理 算法 数据库
现代信息检索——索引构建
现代信息检索——索引构建
现代信息检索——索引构建