`

mysql 如何实现对树形数据的递归查询

阅读更多

让大家失望了,目前的答案似乎是:不能实现!

 

话说 mysql 都快到 6 了,早就号称支持存储过程了,可实际上呢!竟然不支持function中使用动态SQL 、更加不能返回数组或游标

这直接导致在其他数据库上轻松用存储过程实现的递归查询函数,在MYSQL上无法实现!(早在04年就可以在postgres数据库上实现树形递归相关函数了)

 

幸好有高人,大家对付着用用这个绕弯实现吧:

 

http://blog.sina.com.cn/s/blog_43ca06360100ibr6.html

 

http://dev.mysql.com/tech-resources/articles/hierarchical-data.html

 

----------

 

mysql 存储过程 function 有个大问题——不支持返回游标(或数组)!另外function里面还不能使用动态SQL!这两点,基本上把正常的function功能给废了!

另外没有split函数(这更加雪上加霜,导致连用function返回长字符串传递数组这种绕弯实现都成为不可能——返回了不能用函数套函数的方式分割成数组,不能直接写在WHERE里面,基本废了!)

我感觉MySQL始终就不是一个完整的数据库,真不明白为什么还这么流行???难道大家都是简单地把MySQL当平板文件+SQL引擎使用?
反之,几年前功能就已经堪比商业数据库的postgres在功能不断完善的同时,确远没有mysql流行!
(当年mysql3就不支持一些数据库的基本功能(事务、存储过程)、现在快到6了,号称全都支持了,不过明显功能缩水!相比另外一个免费开源数据库postgres明显是个半残)

 

分享到:
评论

相关推荐

    mysql 树形结构查询

    mysql 树形结构查询 ...MySQL 中的树形结构查询可以使用存储过程来实现,并可以根据需要设置递归深度,以控制查询的深度。这种查询方式可以高效地查询树形结构的数据,并且可以提高查询效率和简化查询逻辑。

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

    在构建应用程序时,特别是涉及到用户界面的交互,如菜单系统,我们经常需要将数据组织成层次结构,例如树形结构。这里,我们将深入探讨如何使用递归查询来构建菜单树,并特别关注在MySQL和Oracle这两种广泛使用的...

    MySQL递归查询

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

    MySQL实现递归查询的三种方式.rar

    在数据库管理中,递归查询是一种处理层次结构数据的有效方法,尤其在关系型数据库如MySQL中,递归查询可以帮助我们解决树形结构或有层级关系的数据检索问题。本资料主要探讨了MySQL中实现递归查询的三种常见方法:自...

    MySql 中查询树形结构的全部子项列表 Function

    因此,在实际应用中,可能需要考虑其他优化策略,如预计算节点的子节点列表,或者使用其他数据结构(如邻接列表)来存储树形数据。 总之,通过自定义函数和递归查询,我们可以在MySQL中有效地查询树形结构的全部...

    MyBatis之自查询使用递归实现 N级联动效果(两种实现方式)

    "MyBatis之自查询使用递归实现 N级联动效果" MyBatis是一个功能强大且灵活的持久层框架,它支持自查询和递归查询,下面我们将探讨如何使用MyBatis实现 N级联动效果。 递归查询 递归查询是指在一个查询中调用自身...

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

    总结,虽然MySQL没有原生的递归查询功能,但通过自定义函数和存储过程的巧妙运用,可以实现树形结构数据的递归查询。在实际应用中,应根据数据规模和性能需求选择合适的方法,并进行适当的优化。

    mysql 递归查询 树型结构 代码逻辑

    下面我们将通过具体的例子来深入探讨如何使用MySQL进行递归查询,并结合Java代码实现树形结构的构建。 #### 数据表设计 根据题目中的描述,我们可以看到一个简化的数据表结构如下: - **Id**:记录的唯一标识。 -...

    使用递归删除树形结构的所有子节点(java和mysql实现)

    使用递归删除树形结构的所有子节点(java和mysql实现) ...使用递归删除树形结构的所有子节点可以使用 Java 和 MySQL 实现,前者使用 Map 存储树形结构的数据,而后者使用递归查询删除所有子节点。

    mysql递归查询.doc

    MySQL 递归查询是指在 MySQL 数据库中使用递归函数来实现树形结构数据的查询,例如部门表中某个部门的所有下属部分或者某个部分的所有上级部门。 在 MySQL 中实现递归查询需要使用自定义函数(Stored Function),...

    mysql递归查询.txt

    在数据库查询中,递归查询主要用于处理层级或树形结构的数据。这类数据的特点是每一项记录不仅包含自身的信息,还可能与其他记录形成上下级关系。MySQL 中进行递归查询有两种常见的方式:一种是使用存储过程,另一种...

    数据库设计之递归树查询

    `WITH`语句配合递归选项,可以实现递归查询,非常适合处理树形结构数据。 三、`WITH RECURSIVE`语法 在支持`WITH RECURSIVE`的数据库(如PostgreSQL、SQL Server)中,递归查询的通用语法如下: ```sql WITH ...

    利用java+mysql递归实现拼接树形JSON列表的方法示例

    在开发Java Web项目时,构建树形数据结构是常见的需求,尤其在展示多级分类、组织结构或地理位置等场景。本篇文章将详细讲解如何利用Java和MySQL递归地实现拼接树形JSON列表的方法。 首先,我们需要理解问题的整体...

    mysql递归调用获取树节点(子树)

    然而,对于旧版本的MySQL,存储过程仍然是获取树形结构的有效方法。 在提供的`mysql递归调用获取树节点(子树).doc`文档中,应该详细解释了这个过程,包括如何创建和执行存储过程,以及如何使用提供的测试数据。...

    在java中 遍历mysql中的树形结构

    在Java中遍历MySQL数据库中的树形结构是一项常见的任务,尤其是在处理组织结构、文件系统或任何具有层次关系的数据时。本文将深入探讨如何利用Java语言和MySQL数据库来实现这一功能,解析给定代码片段,并提供一种...

    Ajax+jsp+MySQL实现动态树形菜单

    3. **服务器处理**:jsp接收到请求后,根据请求参数查询MySQL数据库,获取对应的子菜单信息,可以使用SQL的递归查询或者自连接来获取树形结构。 4. **数据返回**:将查询结果转换为JSON格式,例如:`[{"id":1,"name...

    mysql 无限级分类实现思路

    MySQL 实现无限级分类是一种常见的数据库设计挑战,特别是在需要构建层级结构的数据模型时,例如网站导航菜单、组织架构或商品分类。以下将详细介绍三种常见的无限级分类实现方法,并分析其优缺点。 ### 1. 递归...

    关系数据库存储树形结构数据的理想实践

    随着数据量的增大,更应考虑数据索引、查询优化和事务管理等技术,这些都会影响到树形数据在关系数据库中的存储效率和响应时间。 最后,虽然当前文档中出现了部分OCR扫描错误,导致一些文字无法识别,但是不影响...

Global site tag (gtag.js) - Google Analytics