`

MySQL版的树型查询

阅读更多
NND,捣鼓了好长时间才捣鼓出来的MySQL树型查询。效率可能有点低。查询时间比较长。


第一种:
特点:效率有点慢

DROP PROCEDURE P_QUERY_EQUIPMENT_LIST;

DROP PROCEDURE P_GET_EQUIPMENT_CHILDER;

create PROCEDURE P_QUERY_EQUIPMENT_LIST(IN rootId INT)
BEGIN
CREATE TEMPORARY TABLE IF NOT EXISTS tempList(sid int);
CALL P_GET_EQUIPMENT_CHILDER(rootId);
select sid from tempList where sid in (select id from equipment where node_level = 5);
drop temporary table if exists tempList;
END


CREATE PROCEDURE P_GET_EQUIPMENT_CHILDER(IN rootId INT)
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE b INT;
DECLARE curl CURSOR FOR SELECT id FROM equipment where parent_id = rootId;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
INSERT into tempList VALUES(rootId);
SET @@max_sp_recursion_depth = 10;
OPEN curl;
FETCH curl INTO b;
WHILE done = 0 DO
CALL P_GET_EQUIPMENT_CHILDER(b);
FETCH curl INTO b;
END WHILE;
CLOSE curl;

END;














第二种:
特点:当节点多时,会有遗漏,导致查询不全面。可能是FIND_IN_SET()函数有条件限制。

CREATE FUNCTION F_GET_EQUIPMENT_CHILD_LIST(rootId INT)
RETURNS varchar(21845)
BEGIN
DECLARE sChildList VARCHAR(21845);
DECLARE sChildTemp VARCHAR(21845);
SET sChildTemp =cast(rootId as CHAR);
WHILE sChildTemp is not null DO
IF (sChildList is not null) THEN
SET sChildList = concat(sChildList,',',sChildTemp);
ELSE
SET sChildList = concat(sChildTemp);
END IF;
SELECT group_concat(id) INTO sChildTemp FROM equipment where FIND_IN_SET(parent_id,sChildTemp)>0;
END WHILE;
RETURN sChildList;
END;
分享到:
评论

相关推荐

    js+jsp+java+mysql 实现树型菜单

    总的来说,这个项目涉及前端和后端的紧密协作,利用JavaScript的交互性,jsp的动态内容生成,Java的业务逻辑处理,以及MySQL的数据持久化,共同构建了一个可扩展、灵活的树型菜单系统。这样的实现方式既能够充分利用...

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

    ### MySQL 递归查询树型结构的代码逻辑详解 在处理具有层次结构的数据时,例如组织架构、分类信息等场景,经常会遇到需要构建树形结构数据的需求。这种情况下,使用MySQL进行递归查询是一种非常有效的手段。下面...

    MySql无限分类结构与数据组树型菜单

    MySql无限分类结构与数据组树型菜单MySql无限分类结构与数据组树型菜单

    PW7.3树型论坛完整版,没任何绑域名,程序无错完整

    【标题】"PW7.3树型论坛完整版"指的是基于PHPWind(简称PW)7.3版本构建的在线社区论坛系统。这个版本是专为搭建具有树状结构的论坛而设计的,允许用户在各个主题下进行层级讨论,形成清晰的对话脉络。 【描述】"没...

    PHPwind 5.3树型版本

    PHPwind 5.3版本在性能上进行了深度优化,包括页面加载速度、数据库查询效率等方面,确保在高并发访问下仍能保持稳定运行。这提升了用户体验,也减轻了服务器负担。 4. **后台管理** 强大的后台管理系统是PHPwind...

    JSP实现树型结构TREE

    本例"JSP实现树型结构TREE"提供了一个使用JSP(JavaServer Pages)、EXTJS(一个前端JavaScript框架)、JSON(JavaScript Object Notation)以及MySQL数据库来创建树形结构的示例,这对于初学者或开发者来说,是一个...

    PHP论坛社区类网站实例开发源码——SimpleBoard(树型论坛) 多国语言版.zip

    **PHP论坛社区类网站实例开发源码——SimpleBoard(树型论坛) 多国语言版.zip** SimpleBoard是一款基于PHP编程语言开发的开源论坛系统,它以树型结构展示论坛内容,提供多语言支持,适合用于搭建具有层级讨论区的...

    p_sq-phpwind5.3-树型论坛带采集

    3. **性能调优**:合理设置缓存策略,优化数据库查询,以提高论坛的响应速度和负载能力。 总结,PHPWind 5.3的树型论坛结构和数据采集功能是其核心优势,结合易用的安装流程和广泛的扩展性,使得它成为搭建高效社区...

    易语言数据库填充到树型框例程

    5. **设置节点内容**:将查询结果中对应字段的值设置为树型框节点的文本,可以使用“树型框.添加子节点”或“树型框.插入子节点”命令。 6. **处理子节点**:如果有嵌套的数据,即子记录,需要递归地创建子节点,并...

    完整版数据库填充到树型框例程.rar

    常见的关系型数据库管理系统(RDBMS)如MySQL、Oracle、SQL Server等,使用表格形式来组织数据,便于数据操作和查询。 在用户界面设计中,树型框(Tree View)是一种常见的控件,用于显示层次结构的数据。它以节点...

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

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

    完整版数据库填充到树型框例程.e.rar

    这个“完整版数据库填充到树型框例程.e.rar”可能是一个包含源代码、示例或者教程的压缩包,专门用于展示如何将数据库中的数据有效地组织到树形控件中。 首先,我们来理解数据库填充的基本概念。数据库是存储和管理...

    ODBC方式填充树型框.rar

    - 首先,使用ODBC API连接到数据源并执行SQL查询,查询结果应包含树型框所需的层级结构信息。 - 通过`SQLFetch`逐行获取数据,每行数据创建一个`TreeView`节点。对于有层级关系的数据,利用父节点ID和当前行的ID...

    完整版填充数据库到树型框(模块+例程).rar

    "完整版填充数据库到树型框(模块+例程)"这个项目显然关注的是如何将数据库中的数据有效地展示在用户界面的树形控件中,以便用户可以清晰、方便地浏览和操作。这涉及到几个关键的技术点: 1. 数据库交互:首先,...

    易语言数据表关联树型框

    ODBC是一个标准的数据库访问接口,允许程序连接到各种类型的数据库系统,如MySQL、SQL Server等。 树型框,又称为树形控件,是用户界面中常见的一种组件,用于显示具有层次结构的数据。它以节点和子节点的形式展示...

    ORACLE查询树型关系(connect_by_prior_start_with)

    ORACLE 查询树型关系(connect_by_prior_start_with) Oracle 查询树型关系是指使用 START WITH 和 CONNECT BY 子句来实现 SQL 的层次查询。从 Oracle 9i 开始,可以通过 SYS_CONNECT_BY_PATH 函数实现将父节点到...

    无限级树形菜单(Sql数据库)

    Sql数据库,如MySQL、SQL Server或Oracle等,提供了强大的数据处理能力,可以有效地管理无限级别的树形数据。 首先,我们需要设计一个合适的数据库表结构来存储树形菜单的数据。一种常用的方法是使用自引用关系,即...

    asp 用WEB方式写成的树型菜单

    这可以是数据库(如SQL Server、MySQL等)或者XML文件。每个菜单项通常包含ID、父ID、标题和链接等属性。 2. 数据获取:使用ASP的ADO(ActiveX Data Objects)库,通过SQL查询或XML解析来获取菜单数据。对于数据库...

    PHP+Mysql树型结构(无限分类)数据库设计的2种方式实例

    在设计PHP+Mysql树型结构(无限分类)数据库时,需要根据实际应用场景和性能需求来选择合适的数据库设计方式。对于大多数小型应用,邻接表方式足够使用;而对于大型应用,尤其对性能要求较高的场景,推荐使用预排序...

    Delphi中数据库关联树型结构生成与同步数据维护.zip_数据同步_数据库关联_数据维护_树型结构生成

    在Delphi中,我们可以使用ADO(ActiveX Data Objects)或DBX(Database Express)等组件来处理数据库连接和数据操作,这些组件支持多种数据库管理系统,如SQL Server、Oracle、MySQL等。 树型结构是一种常见的数据...

Global site tag (gtag.js) - Google Analytics