mysql逆向递归树查询

创建mysql函数 fun_Knowledge_child_url, 输入一个int类型节点chId,return一个url字符串

BEGIN
	 DECLARE sTemp VARCHAR(1000);
         DECLARE sTempChd VARCHAR(1000);
         DECLARE knoName VARCHAR(100);
         DECLARE tempPid INT;  
SET sTemp = ‘$‘;
SET knoName = ‘$‘;
SET tempPid = chId;

SELECT t3.`name` into sTemp  FROM mooc_si_knowledge_tree t3 where t3.id = chId;
       			 
WHILE tempPid>0 DO
SELECT t.pId into tempPid  FROM mooc_si_knowledge_tree t where t.id = tempPid;
        IF tempPid>0
		THEN
		SELECT t2.`name` INTO knoName FROM mooc_si_knowledge_tree t2 where t2.id=tempPid;
		SET sTemp = CONCAT(knoName,‘/‘,sTemp);
	END IF;
END WHILE;
	RETURN sTemp;

END
时间: 2024-12-15 04:58:46

mysql逆向递归树查询的相关文章

mysql中递归树状结构<转>

在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点.但很遗憾,在MySQL的目前版本中还没有对应的功能. 在MySQL中如果是有限的层次,比如我们事先如果可以确定这个树的最大深度是4, 那么所有节点为根的树的深度均不会超过4,则我们可以直接通过left join 来实现. 但很多时候我们无法控制树的深度.这时就需要在MySQL中用存储过程来实现或在你的程序中来实现这个递归.本文讨论一下几种实现的方法.

字符串的公共前缀对Mysql B+树查询影响回溯分析

年前项目组接微信公众号. 上线之后,跟微信相关的用cid列的查询会话的SQL变慢了几十倍!思考这个问题思考了非常久.从出现以来一直是我心头的一个结.cid这一列是建了索引的,普通的cid列更新都没问题,为何仅仅有微信的有问题?同样的前缀又是怎样影响索引的? 分析过程 1.explain下微信cid的查询.微信的cid会以mid-qqwanggou001为前缀插入数据 explain select * from analysis_sessions where cid = "mid-qqwanggo

MySQL学习笔记-子查询和连接

MySQL学习笔记-子查询和连接 使客户端进入gbk编码方式显示: mysql> SET NAMES gbk; 1.子查询 子查询的定义: 子查询(Subquery)是指出现在其他SQL语句内的SELECT子句. 例如:  SELECT * FROM t1 WHERE col1 = (SELECT col2 FROM t2); 其中SELECT * FROM t1 称为Outer Query / Outer Statement (外部查询) SELECT col2 FROM t2 , 被称为Su

SQL With(递归 CTE 查询)

本文来自:http://www.cnblogs.com/smailxiaobai/archive/2012/01/16/2323291.html 指定临时命名的结果集,这些结果集称为公用表表达式 (CTE).该表达式源自简单查询,并且在单条 SELECT.INSERT.UPDATE 或 DELETE 语句的执行范围内定义.该子句也可用在 CREATE VIEW 语句中,作为该语句的 SELECT 定义语句的一部分.公用表表达式可以包括对自身的引用.这种表达式称为递归公用表表达式.  Transa

在MySQL中使用explain查询SQL的执行计划

1.什么是MySQL执行计划 要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解. MySQL本身的功能架构分为三个部分,分别是 应用层.逻辑层.物理层,不只是MySQL ,其他大多数数据库产品都是按这种架构来进行划分的. 应用层,主要负责与客户端进行交互,建立链接,记住链接状态,返回数据,响应请求,这一层是和客户端打交道的. 逻辑层,主要负责查询处理.事务管理等其他数据库功能处理,以查询为例. 首先接收到查询SQL之后,数据库会立即分配一个线程对其进行处理,第

SQL With (递归CTE查询)

指定临时命名的结果集,这些结果集称为公用表表达式 (CTE).该表达式源自简单查询,并且在单条 SELECT.INSERT.UPDATE 或 DELETE 语句的执行范围内定义.该子句也可用在 CREATE VIEW 语句中,作为该语句的 SELECT 定义语句的一部分.公用表表达式可以包括对自身的引用.这种表达式称为递归公用表表达式. 语法 [ WITH <common_table_expression> [ ,...n ] ] <common_table_expression>

MySQL重点内容:查询语句、名称解析

MariaDB安装方式:包管理器(rpm, deb)通用二进制格式:源码编译安装:SQL:数据库.表.索引.视图.存储过程.存储函数.触发器.事件调度器.用户和权限:元数据数据库:库名为mysqlMYSQL语句:有2种DDL, DMLDDL: CREATE, ALTER, DROPDML: INSERT, DELETE, UPDATE, SELECTDCL: GRANT(授权), REVOKE(撤销授权)MariaDB程序的组成:C/S架构C:Clientmysql:CLI交互式客户端程序:my

ORACLE 递归树型结构统计汇总

区域平台统计报表,省--市--区 汇总,还有各级医院,汇总与列表要在一个列表显示. 用到ORACLE 会话时临时表  GLOBAL TEMPORARY TABLE     ON COMMIT PRESERVE ROWS; 递归树: START WITH P.PARENTORG = 'ROOT'               CONNECT BY PRIOR P.ORGCODE = P.PARENTORG; WITH 连续嵌套 记录一下便于查阅. CREATE OR REPLACE PACKAGE

MySQL索引-B+树(看完你就明白了)

索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据.索引最形象的比喻就是图书的目录了.注意这里的大量,数据量大了索引才显得有意义,如果我想要在 [1,2,3,4] 中找到 4 这个数据,直接对全数据检索也很快,没有必要费力气建索引再去查找. 索引在 MySQL 数据库中分三类: B+ 树索引 Hash 索引 全文索引 我们今天要介绍的是工作开发中最常接触到的 InnoDB 存储引擎中的 B+ 树索引.要介绍 B+ 树索引,就不得不提二叉查找树,平衡二叉树和 B 树这三种数据