`

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,oracle,含表结构递归查询菜单。

    MySQL多种递归查询方法.docx

    Oracle 递归查询, start with connect by prior 用法 find_in_set 函数 concat,concat_ws,group_concat 函数 MySQL 自定义函数 手动实现 MySQL 递归查询 Oracle 递归查询 在 Oracle 中是通过 start ...

    MySQL递归查询

    MySQL递归查询,oracle在迁移成mysql后难免会遇到的问题。

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

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

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

    前言 ...Oracle递归查询 oracle实现递归查询的话,就可以使用start with … connect by connect by递归查询基本语法是: select 1 from 表格 start with … connect by prior id = pId start with

    mysql 递归

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

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

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

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

    主要给大家介绍了关于Oracle递归查询start with connect by prior、的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    MySQL递归查询树状表的子节点、父节点具体实现

    简介:mysql5.0.94版本,该版本以及较高级的版本(5.5、6等等)尚未支持循环递归查询,和sqlserver、oracle相比,mysql难于在树状表中层层遍历的子节点。本程序重点参考了下面的资料,写了两个sql存储过程,子节点...

    SQL语句 递归

    oracle 递归 SQL 语句.

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

    本文实例讲述了MySQL实现树状所有子节点查询的方法。分享给大家供大家参考,具体如下: 在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点。但很遗憾,...

    mysql数据库的基本操作语法

    上面的列名和子查询的列名以及类型要对应 全部列名模式: create table userInfo as select * from user; 直接将整个表的类型和数据备份到新表userInfo中 9、 添加表字段 添加单列 alter table user add tel ...

    C,扫雷游戏,递归函数练习Mine-Clearance.zip

    数据库技术:如关系型数据库(如MySQL、Oracle、SQL Server)和非关系型数据库(如MongoDB、Redis)等。 前端开发:HTML、CSS、JavaScript等用于构建网页和Web应用程序的技术。 后端开发:涉及服务器端编程、API开发...

    j2ee学习路径 对初学者很有帮助

    2:数据库(Oracle或者MySQL) SQL语句 多表连接,内外连接, 子查询等 管理表、视图、索引、序列、约束等 树状结构存储 存储过程、触发器 数据库设计三范式、 3:JDBC JDBC基础 连接池 树状结构存储与展现 ...

    程序员的SQL金典.rar

     本书特色:主要介绍SQL的语法规则及在实际开发中的应用,并且对SQL在MySQL、MS SQL Server、Oracle和DB2中的差异进行了分析;详细讲解数据库对增、删、改、查等SQL的支持并给出了相应的SQL应用案例;透彻分析函数...

    程序员的SQL金典6-8

     11.9.3 My SQL Server和DB2中递归查询 附录A 常用数据库系统的安装和使用  A.1 DB2的安装和使用  A.2 MySQL的安装和使用  A.3 Oracle的安装和使用  A.4 Microsoft SQL Server的安装和使用 显示部分信息

    程序员的SQL金典7-8

     11.9.3 My SQL Server和DB2中递归查询 附录A 常用数据库系统的安装和使用  A.1 DB2的安装和使用  A.2 MySQL的安装和使用  A.3 Oracle的安装和使用  A.4 Microsoft SQL Server的安装和使用 显示部分信息

    程序员的SQL金典3-8

     11.9.3 My SQL Server和DB2中递归查询 附录A 常用数据库系统的安装和使用  A.1 DB2的安装和使用  A.2 MySQL的安装和使用  A.3 Oracle的安装和使用  A.4 Microsoft SQL Server的安装和使用 显示部分信息

    程序员的SQL金典4-8

     11.9.3 My SQL Server和DB2中递归查询 附录A 常用数据库系统的安装和使用  A.1 DB2的安装和使用  A.2 MySQL的安装和使用  A.3 Oracle的安装和使用  A.4 Microsoft SQL Server的安装和使用 显示部分信息

    万能后台管理模板javaweb

    反向生成: 任意连接其它数据库(mysql、oracle、sqlserver),根据表反射生成本系统的模块 10. 性能监控:监控整个系统的性能,SQL监控,SQL防火墙,URL监控,SPRING监控,SESSION监控等 11. 接口测试:POST or GET ...

Global site tag (gtag.js) - Google Analytics