MySQL递归查询树状表的子节点、父节点具体实现
来源:互联网 发布:scwozer系统优化工具 编辑:程序博客网 时间:2024/05/16 17:14
简介:mysql5.0.94版本,该版本以及较高级的版本(5.5、6等等)尚未支持循环递归查询,和sqlserver、oracle相比,mysql难于在树状表中层层遍历的子节点。本程序重点参考了下面的资料,写了两个sql存储过程,子节点查询算是照搬了,父节点查询是逆思维弄的。
表结构和表数据就不公示了,查询的表user_role,主键是id,每条记录有parentid字段(对应该记录的父节点,当然,一个父节点自然会有一个以上的子节点)
CREATE FUNCTION `getChildList`(rootId INT) RETURNS varchar(1000) BEGIN DECLARE sChildList VARCHAR(1000); DECLARE sChildTemp VARCHAR(1000); 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 user_role where FIND_IN_SET(parentid,sChildTemp)>0; END WHILE; RETURN sChildList; END;
/*获取子节点*/
/*调用:
1、select getChildList(0) id;
2、select * 5From user_role where FIND_IN_SET(id, getChildList(2));
*/ CREATE FUNCTION `getParentList`(rootId INT) RETURNS varchar(1000) BEGIN DECLARE sParentList varchar(1000); DECLARE sParentTemp varchar(1000); SET sParentTemp =cast(rootId as CHAR); WHILE sParentTemp is not null DO IF (sParentList is not null) THEN SET sParentList = concat(sParentTemp,',',sParentList); ELSE SET sParentList = concat(sParentTemp); END IF; SELECT group_concat(parentid) INTO sParentTemp FROM user_role where FIND_IN_SET(id,sParentTemp)>0; END WHILE; RETURN sParentList; END;
/*获取父节点*/
/*调用:
1、select getParentList(6) id;
2、select * From user_role where FIND_IN_SET(id, getParentList(2));
*/
0 0
- MySQL 递归查询树状表的所有子节点、所有父节点具体实现
- MySQL递归查询树状表的子节点、父节点具体实现
- MySQL递归查询树状表的子节点、父节点具体实现
- MySQL递归查询树状表的子节点、父节点
- MySQL递归查询树状表的子节点、父节点
- MySQL递归查询树状表的子节点、父节点
- MySQL递归查询树状表的子节点、父节点
- MySQL函数实现递归查询子节点
- mysql递归查询子节点
- mysql 递归查询父节点及子节点
- Mysql中的递归层次查询(根据父节点查找所有的子节点和根据子节点查询所有的父节点)的两种运用
- MySQL中进行树状所有子节点的查询
- MySQL中进行树状所有子节点的查询
- MySQL中进行树状所有子节点的查询
- MySQL中进行树状所有子节点的查询
- MySQL中进行树状所有子节点的查询
- MySQL中进行树状所有子节点的查询
- MySQL中进行树状所有子节点的查询 .
- xss(cookie劫持)
- android VideoView视频引导页
- Parajumpers Herren scene enjoy cool
- 替换文件中某个字符串并写入新内容(Java代码实现)
- iOS常用工具正则表达式判断手机邮编身份证快递单手机中间加※
- MySQL递归查询树状表的子节点、父节点具体实现
- 日常潜水-20160927-安装PHP-DOMDocument模块
- 不使用notifyDataSetChanged更新ListView
- 第五周项目1——建立顺序栈算法库
- 《R语言编程艺术》笔记1
- maven常见问题
- Linux下的文件/目录操作相关命令
- Zookeeper ZAB 协议分析
- IT怎么学习?职业教育学习IT!IT的职业教育