`

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 实现树型菜单

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

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

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

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

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

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

    主要介绍了MySQL实现树状所有子节点查询的方法,涉及mysql节点查询、存储过程调用等操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下

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

    主要介绍了PHP+Mysql树型结构(无限分类)数据库设计的2种方式实例,以及优劣分析、探讨,需要的朋友可以参考下

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

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

    easy记事本v6.6网页版本存储数据库记事本

    easy记事本(网页版记事本),支持mysql数据插入和查询,快速查找,支持网页与文本合并显示。 mysql用户名root,密码Zzerp123。 使用tomcat部署,方便快捷。 将数据保存到mysql中,可以时常备份,并且使用。 部署: ...

    easy记事本v6.2网页版本存储数据库记事本

    easy记事本(网页版记事本),支持mysql数据插入和查询,快速查找,支持网页与文本合并显示。 mysql用户名root,密码Zzerp123。 使用tomcat部署,方便快捷。 将数据保存到mysql中,可以时常备份,并且使用。 部署: ...

    easy记事本v6.3网页版本存储数据库记事本

    easy记事本(网页版记事本),支持mysql数据插入和查询,快速查找,支持网页与文本合并显示。 mysql用户名root,密码Zzerp123。 使用tomcat部署,方便快捷。 将数据保存到mysql中,可以时常备份,并且使用。 部署: ...

    PHP和MySQL Web开发第4版pdf以及源码

    《php和mysql web开发(原书第4版)》:开发人员专业技术丛书。 目录 读者反馈 译者序 前言 作者简介 第一篇 使用PHP 第1章 PHP快速入门教程 1.1 开始之前:了解PHP 1.2 创建一个示例应用:Bob汽车零部件商店 ...

    zhicun.rar_Java 8_javabean mysql mvc_jsp 树 数据库

    1,栏目无限级分类,形成树型结构,可以随意增加,修改,移动,删除栏目,移动或删除栏目的同时系统自动移动或删除其对应子栏目和信息。 2,系统支持国际化,采用UTF-8编码,资源文件里可以设置多国语言,形成多国语言...

    PHP和MySQL WEB开发(第4版)

    12.3.3 用EXPLAIN理解查询操作的工作过程 12.4 数据库的优化 12.4.1 设计优化 12.4.2 权限 12.4.3 表的优化 12.4.4 使用索引 12.4.5 使用默认值 12.4.6 其他技巧 12.5 备份MySQL数据库 12.6 恢复MySQL数据库 12.7 ...

    php+mysql实现无限级分类 | 树型显示分类关系

    无限级分类,主要是通过储存上级分类的id以及分类路径来实现。由于数据的结构简单,所以要将分类的关系由树状显示,我只能想到用递归的方式给于实现。 无限级分类,主要是通过储存上级分类的id以及分类路径来实现。...

    [论坛社区]SimpleBoard(树型论坛) v1.1 多国语言版_simpleboard11.rar

    资源内容:项目全套源码+完整文档 源码说明: 全部项目源码都是经过测试校正后百分百...数据库:MySql(建议用 5.7,8.0 有时候会有坑) 部署环境:Tomcat(建议用 7.x 或者 8.x b版本),maven Spring root vue.js

    PHP和MySQL Web开发第4版

    《php和mysql web开发(原书第4版)》:开发人员专业技术丛书。 目录 读者反馈 译者序 前言 作者简介 第一篇 使用PHP 第1章 PHP快速入门教程 1.1 开始之前:了解PHP 1.2 创建一个示例应用:Bob汽车零部件商店 ...

    easy记事本v5.9 网页版本存储数据库记事本

    easy记事本(网页版记事本),支持mysql数据插入和查询,快速查找,支持网页与文本合并显示。 mysql用户名root,密码Zzerp123。 使用tomcat部署,方便快捷。 将数据保存到mysql中,可以时常备份,并且使用。 部署: ...

    easy记事本v6.0网页版本存储数据库记事本

    easy记事本(网页版记事本),支持mysql数据插入和查询,快速查找,支持网页与文本合并显示。 mysql用户名root,密码Zzerp123。 使用tomcat部署,方便快捷。 将数据保存到mysql中,可以时常备份,并且使用。 部署: ...

    easy记事本v5.6 网页版本存储数据库记事本

    easy记事本(网页版记事本),支持mysql数据插入和查询,快速查找,支持网页与文本合并显示。 mysql用户名root,密码Zzerp123。 使用tomcat部署,方便快捷。 将数据保存到mysql中,可以时常备份,并且使用。 部署: ...

    easy记事本v2.8 网页版本存储数据库记事本

    easy记事本(网页版记事本),支持mysql数据插入和查询,快速查找,支持网页与文本合并显示。 mysql用户名root,密码Zzerp123。 使用tomcat部署,方便快捷。 将数据保存到mysql中,可以时常备份,并且使用。 部署: ...

Global site tag (gtag.js) - Google Analytics