`

mysql以及oracle的递归查询

阅读更多

 

Oracle中实现递归查询的途径较多

方法1:通过with子句实现递归

  1. with temp(id,parentid) as (  
  2.  select id,parentid  
  3.  from t  
  4.  where t.id = '1'  
  5.  union all  
  6.  select t.id, t.parentid  
  7.  from temp, t  
  8.  where temp.parentid = t.id)  


with子句中递归with子句达到递归查询的效果

方法2:通过oracle提供的connect by来实现

  1. SELECT id, parentid  
  2. FROM t  
  3. CONNECT BY id = PRIOR parentid  
  4. START WITH id = '1';  


prior在parentid前面表示向下递归,在id前面向上递归

 

MySQL中递归的实现:

mysql中没有提供connect by这种语法,也没有with子句,那么怎么搞呢?我们定义一个函数实现

  1. delimiter //  
  2. DROP FUNCTION IF EXISTS queryChildren;  
  3. CREATE FUNCTION `queryChildren` (areaId INT)  
  4. RETURNS VARCHAR(4000)  
  5. BEGIN  
  6. DECLARE sTemp VARCHAR(4000);  
  7. DECLARE sTempChd VARCHAR(4000);  
  8.   
  9. SET sTemp = '$';  
  10. SET sTempChd = cast(areaId as char);  
  11.   
  12. WHILE sTempChd is not NULL DO  
  13. SET sTemp = CONCAT(sTemp,',',sTempChd);  
  14. SELECT group_concat(id) INTO sTempChd FROM t_areainfo where FIND_IN_SET(parentId,sTempChd)>0;  
  15. END WHILE;  
  16. return sTemp;  
  17. END;  
  18. //  

在sql语句使用该函数

  1. select * from t_areainfo where find_in_set(id,queryChildrenAreaInfo(1)); 

 

 

 

本文来源于:http://blog.csdn.net/yangnianbing110/article/details/36664799

分享到:
评论

相关推荐

    递归查询菜单树,支持mysql,oracle

    这里,我们将深入探讨如何使用递归查询来构建菜单树,并特别关注在MySQL和Oracle这两种广泛使用的数据库系统中的实现。 首先,我们要理解什么是递归查询。递归查询是一种在数据库中处理层次数据的方法,它通过自身...

    MySQL多种递归查询方法.docx

    虽然MySQL没有提供类似于Oracle的内置递归查询功能,但通过自定义函数、存储过程等手段,依然可以有效地实现递归查询的需求。 #### 三、其他MySQL相关知识点 除了递归查询之外,文章还提到了以下几个知识点: ###...

    MySQL递归查询

    MySQL 递归查询是指在 MySQL 中实现类似 Oracle Hierarchical Queries 的功能,用于查询树形结构中的所有子节点。由于 MySQL 目前还没有内置的递归查询功能,因此需要使用其他方法来实现。 第一种方法:使用函数来...

    在ORACLE、MSSQL、MYSQL中树结构表递归查询的实现.pdf

    ORACLE、MSSQL(Microsoft SQL Server)、MYSQL是三大主流数据库系统,它们各自提供了不同的方式来实现递归查询。 首先,我们来看ORACLE数据库中的递归查询。ORACLE通过CONNECT BY子句来实现递归查询。CONNECT BY...

    一种MySQL数据库SQL递归查询的研究与实现.pdf

    虽然MySQL在处理常规数据操作和查询方面表现出色,但在某些特定功能上,如递归查询,与Oracle和SQL Server等商业数据库相比,存在一定的局限性。在MySQL中,没有内置的递归查询语句,通常需要借助存储过程或存储函数...

    mysql 递归

    用mysql实现oracle递归,通过with as 来实现

    数据库设计之递归树查询

    本文将深入探讨如何通过递归查询来解决这类问题,并着重讲解使用`WITH`语句来实现递归查询的方法,适用于多种数据库系统,如MySQL、PostgreSQL、SQL Server等。 一、理解递归查询 递归查询是一种在数据库中遍历层级...

    Oracle start with.connect by prior子句实现递归查询

    ### Oracle Start With.Connect By Prior 子句实现递归查询 #### 概述 在Oracle数据库中,`Start With.Connect By Prior`子句是执行递归查询的一种强大工具,主要用于处理层次结构数据。这类数据通常存在于组织...

    Mysql树形递归查询的实现方法

    在MySQL中实现树形递归查询,由于MySQL本身并不直接支持类似于Oracle的`START WITH ... CONNECT BY`语法,因此需要采用其他策略。通常,我们可以利用自定义函数或递归查询的方式来处理树形结构数据。以下将详细介绍...

    sql_函数实现三种父子递归

    本文将探讨如何使用SQL函数实现三种常见的递归查询:找到所有子节点、查找所有父节点以及面包屑导航数据。我们将通过一个名为`Region`的示例表来说明这些操作。 首先,我们需要一个基础的表结构,如`Category`或`...

    Mysql+Oracle函数文档

    除了这些基础函数,MySQL 和 Oracle 还支持大量的高级特性,例如窗口函数、递归查询、正则表达式等。在实际应用中,开发者可以根据需求选择合适的数据库系统,并熟练运用其内置函数提高数据处理效率。 总之,掌握 ...

    多级数据-Mysql中的递归层次查询(父子查询).doc

    Oracle 中有 Hierarchical Queries 可以通过 CONNECT BY 来查询,但是,在 MySQL 中还没有对应的函数。为了解决这个问题,我们可以使用自定义函数来实现递归层次查询。 首先,我们需要创建一个名为 `treenodes` 的...

    SQL语句 递归

    本文将深入探讨Oracle数据库中的递归查询,包括其基本语法、工作原理以及几个实用的例子。 #### 一、递归查询概述 递归查询允许我们在SQL语句中执行多次相同的操作,直到满足某个终止条件为止。这种查询特别适合...

    Oracle递归查询start with connect by prior的用法

    Oracle数据库中的递归查询是一种强大的工具,用于处理层次结构数据,如组织结构、产品分类或地理区域等。在Oracle中,`START WITH` 和 `CONNECT BY` 是进行递归查询的关键字,它们允许我们从一个特定的根节点出发,...

    dbmove_sql语句转化.zip_MYSQL_dbmove_oracle

    Oracle的CONNECT BY用于构建层次查询,而在MySQL中可能需要递归的用户定义变量或JOIN操作。子查询在两个系统中语法也略有不同。 7. **事务控制**: Oracle和MySQL都支持事务,但语法上有一些差异。如Oracle使用...

    全国行政区域表,支持mysql和oracle2个版本

    - 数据库索引的优化对于查询性能至关重要,尤其是在涉及大量地域查询的应用中,对`id`和`code`字段建立唯一索引可以加快查找速度。 5. **应用实例**: - 地理信息系统(GIS):在地图应用中,行政区域代码可以...

    MySQL实现树状所有子节点查询的方法

    在MySQL中,实现树状所有子节点的查询并非像Oracle那样可以直接使用Hierarchical Queries和`CONNECT BY`语句。然而,尽管MySQL不直接支持这样的功能,我们仍然可以通过其他方法来达到相同的效果。以下将详细介绍几种...

Global site tag (gtag.js) - Google Analytics