在Oracle中实现递归查询的途径较多
方法1:通过with子句实现递归
- with temp(id,parentid) as (
- select id,parentid
- from t
- where t.id = '1'
- union all
- select t.id, t.parentid
- from temp, t
- where temp.parentid = t.id)
with子句中递归with子句达到递归查询的效果
方法2:通过oracle提供的connect by来实现
- SELECT id, parentid
- FROM t
- CONNECT BY id = PRIOR parentid
- START WITH id = '1';
prior在parentid前面表示向下递归,在id前面向上递归
MySQL中递归的实现:
mysql中没有提供connect by这种语法,也没有with子句,那么怎么搞呢?我们定义一个函数实现
- delimiter //
- DROP FUNCTION IF EXISTS queryChildren;
- CREATE FUNCTION `queryChildren` (areaId INT)
- RETURNS VARCHAR(4000)
- BEGIN
- DECLARE sTemp VARCHAR(4000);
- DECLARE sTempChd VARCHAR(4000);
- SET sTemp = '$';
- SET sTempChd = cast(areaId as char);
- WHILE sTempChd is not NULL DO
- SET sTemp = CONCAT(sTemp,',',sTempChd);
- SELECT group_concat(id) INTO sTempChd FROM t_areainfo where FIND_IN_SET(parentId,sTempChd)>0;
- END WHILE;
- return sTemp;
- END;
- //
在sql语句使用该函数
- select * from t_areainfo where find_in_set(id,queryChildrenAreaInfo(1));
本文来源于:http://blog.csdn.net/yangnianbing110/article/details/36664799
相关推荐
这里,我们将深入探讨如何使用递归查询来构建菜单树,并特别关注在MySQL和Oracle这两种广泛使用的数据库系统中的实现。 首先,我们要理解什么是递归查询。递归查询是一种在数据库中处理层次数据的方法,它通过自身...
虽然MySQL没有提供类似于Oracle的内置递归查询功能,但通过自定义函数、存储过程等手段,依然可以有效地实现递归查询的需求。 #### 三、其他MySQL相关知识点 除了递归查询之外,文章还提到了以下几个知识点: ###...
MySQL 递归查询是指在 MySQL 中实现类似 Oracle Hierarchical Queries 的功能,用于查询树形结构中的所有子节点。由于 MySQL 目前还没有内置的递归查询功能,因此需要使用其他方法来实现。 第一种方法:使用函数来...
ORACLE、MSSQL(Microsoft SQL Server)、MYSQL是三大主流数据库系统,它们各自提供了不同的方式来实现递归查询。 首先,我们来看ORACLE数据库中的递归查询。ORACLE通过CONNECT BY子句来实现递归查询。CONNECT BY...
虽然MySQL在处理常规数据操作和查询方面表现出色,但在某些特定功能上,如递归查询,与Oracle和SQL Server等商业数据库相比,存在一定的局限性。在MySQL中,没有内置的递归查询语句,通常需要借助存储过程或存储函数...
用mysql实现oracle递归,通过with as 来实现
本文将深入探讨如何通过递归查询来解决这类问题,并着重讲解使用`WITH`语句来实现递归查询的方法,适用于多种数据库系统,如MySQL、PostgreSQL、SQL Server等。 一、理解递归查询 递归查询是一种在数据库中遍历层级...
### Oracle Start With.Connect By Prior 子句实现递归查询 #### 概述 在Oracle数据库中,`Start With.Connect By Prior`子句是执行递归查询的一种强大工具,主要用于处理层次结构数据。这类数据通常存在于组织...
在MySQL中实现树形递归查询,由于MySQL本身并不直接支持类似于Oracle的`START WITH ... CONNECT BY`语法,因此需要采用其他策略。通常,我们可以利用自定义函数或递归查询的方式来处理树形结构数据。以下将详细介绍...
本文将探讨如何使用SQL函数实现三种常见的递归查询:找到所有子节点、查找所有父节点以及面包屑导航数据。我们将通过一个名为`Region`的示例表来说明这些操作。 首先,我们需要一个基础的表结构,如`Category`或`...
除了这些基础函数,MySQL 和 Oracle 还支持大量的高级特性,例如窗口函数、递归查询、正则表达式等。在实际应用中,开发者可以根据需求选择合适的数据库系统,并熟练运用其内置函数提高数据处理效率。 总之,掌握 ...
Oracle 中有 Hierarchical Queries 可以通过 CONNECT BY 来查询,但是,在 MySQL 中还没有对应的函数。为了解决这个问题,我们可以使用自定义函数来实现递归层次查询。 首先,我们需要创建一个名为 `treenodes` 的...
本文将深入探讨Oracle数据库中的递归查询,包括其基本语法、工作原理以及几个实用的例子。 #### 一、递归查询概述 递归查询允许我们在SQL语句中执行多次相同的操作,直到满足某个终止条件为止。这种查询特别适合...
Oracle数据库中的递归查询是一种强大的工具,用于处理层次结构数据,如组织结构、产品分类或地理区域等。在Oracle中,`START WITH` 和 `CONNECT BY` 是进行递归查询的关键字,它们允许我们从一个特定的根节点出发,...
Oracle的CONNECT BY用于构建层次查询,而在MySQL中可能需要递归的用户定义变量或JOIN操作。子查询在两个系统中语法也略有不同。 7. **事务控制**: Oracle和MySQL都支持事务,但语法上有一些差异。如Oracle使用...
- 数据库索引的优化对于查询性能至关重要,尤其是在涉及大量地域查询的应用中,对`id`和`code`字段建立唯一索引可以加快查找速度。 5. **应用实例**: - 地理信息系统(GIS):在地图应用中,行政区域代码可以...
在MySQL中,实现树状所有子节点的查询并非像Oracle那样可以直接使用Hierarchical Queries和`CONNECT BY`语句。然而,尽管MySQL不直接支持这样的功能,我们仍然可以通过其他方法来达到相同的效果。以下将详细介绍几种...