The invention discloses a recursive query method, device, server and storage medium. The method includes acquiring recursive query request, determining recursive query instruction according to the identification of the data object to be queried, executing query instruction for the query data object, obtaining the first result set, storing the first result set into the first cache, and executing recursive instruction for the first result set. The second result set is obtained and stored in the second cache. If the second result set is non-empty, the first cache is cleared and the pointers of the first cache and the second cache are exchanged. The recursive instructions for the first result set are repeated to obtain the second result set, and the second result set is stored in the second cache until the second result set is empty. In the above technical scheme, recursive instructions are executed iteratively until the second result set is empty, which avoids the difficulty of reading and maintenance caused by too many nesting levels of SELECT statements.
【技术实现步骤摘要】
递归查询方法、装置、服务器及存储介质
本专利技术实施例涉及计算机
,尤其涉及一种递归查询方法、装置、服务器及存储介质。
技术介绍
递归是一个对象在其定义或说明中直接或间接调用自身的一种方法,公用表表达式(CommonTableExpression,CTE)是一个在查询中定义的临时命名结果集,CTE的一个重要优点是可以引用自身,从而创建递归CTE。递归CTE是一个重复执行初始CTE以返回数据子集直到获取完整结果的公用表表达式,当某个查询引用递归CTE时,该查询被称为递归查询。递归查询是一种常见的查询方式,递归查询等价于将多个SELECT语句的查询结果通过UNIONALL的方式,合并成一个结果集输出,其中,UNIONALL是一种双目集合操作符,用于合并两个SELECT语句的结果集,即对两个SELECT语句的结果集进行并集操作,包括重复的数据,这种通过UNIONALL关联的各个SELECT语句分别作为一个分支,当前分支的数据来源于上一个分支的查询结果,第一个分支的查询结果作为第一结果,直到当前分支的查询结果为空集为止,这种查询方式每个分支存在相同的语句,每个分支都 ...
【技术保护点】
1.一种递归查询方法,其特征在于,包括:获取递归查询请求,所述递归查询请求包括待查询数据对象的标识,并根据所述待查询数据对象的标识,确定递归查询指令,所述递归查询指令包括查询指令和递归指令;对所述待查询数据对象执行所述查询指令,得到第一结果集,并将所述第一结果集存储至第一缓存;对所述第一结果集执行所述递归指令,得到第二结果集,并将所述第二结果集存储至第二缓存;若所述第二结果集为非空集,则清空所述第一缓存以及交换所述第一缓存和第二缓存的指针,重复执行对所述第一结果集执行所述递归指令,得到第二结果集,并将所述第二结果集存储至第二缓存,直至所述第二结果集为空集。
【技术特征摘要】
1.一种递归查询方法,其特征在于,包括:获取递归查询请求,所述递归查询请求包括待查询数据对象的标识,并根据所述待查询数据对象的标识,确定递归查询指令,所述递归查询指令包括查询指令和递归指令;对所述待查询数据对象执行所述查询指令,得到第一结果集,并将所述第一结果集存储至第一缓存;对所述第一结果集执行所述递归指令,得到第二结果集,并将所述第二结果集存储至第二缓存;若所述第二结果集为非空集,则清空所述第一缓存以及交换所述第一缓存和第二缓存的指针,重复执行对所述第一结果集执行所述递归指令,得到第二结果集,并将所述第二结果集存储至第二缓存,直至所述第二结果集为空集。2.根据权利要求1所述的方法,其特征在于,所述查询指令包括连接符,相应的,所述对所述待查询数据对象执行所述查询指令,包括:所述连接符带有预设标识时,对所述待查询数据对象执行所述查询指令。3.根据权利要求2所述的方法,其特征在于,所述第一结果集还返回至所述连接符,所述递归指令包括操作符,所述操作符与所述连接符对应,相应的,所述对所述第一结果集执行所述递归指令,得到第二结果集,包括:查找与所述操作符对应的连接符,取出所述连接符中的第一结果集,对所述第一结果集执行所述递归指令,得到第二结果集,并将所述第二结果集返回至所述连接符。4.根据权利要求1所述的方法,其特征在于,在得到第一结果集之后,还包括:如果所述第一结果集为空集,递归查询结束。5.一种递归查询装置,其特征在于,包括:确定模块,用于获取递归查询请求,所述递归查询请求包括待查询数据对象的标识,并根据所述待查询数据对象的标识,确定递归查询指令,所述递归查询指令包括查询...
【专利技术属性】
技术研发人员:望声宜,朱仲颖,
申请(专利权)人:上海达梦数据库有限公司,
类型:发明
国别省市:上海,31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。