数据库|mysql教程
sqlserver,oracle,mysql,程序,资
数据库-mysql教程
个性网址导航源码下载,怎么更改vscode语言,ubuntu 编程 全屏,tomcat各级目录介绍,sqlite3怎么插入数据库,延时爬虫,php 增加数组,seo网站描述在哪看,物业 网站 下载,微博企业版模板lzw
简介:mysql5.0.94版本,该版本以及较高级的版本(5.5、6等等)尚未支持循环递归查询,和sqlserver、oracle相比,mysql难于在树状表中层层遍历的子节点。本程序重点参考了下面的资料,写了两个sql存储过程,子节点查询算是照搬了,父节点查询是逆思维弄的。
管理文件的网站源码,vscode实用的主题,ubuntu系统19,tomcat工作室,手机版sqlite3下载,笑脸爬虫,php 5.3 vc9,seo真的有用吗,下码网站大全,php模板效率lzw
资料参考:/ACMAIN_CHM/article/details/4142971#comments
钓鱼网页源码,vscode怎么直接联想js,ubuntu 目录 别名,tomcat8教程,爬虫资讯站,php查询类型转换,河北区seo优化公司,如何给WordPress网站更换域名,dz门户企业模板lzw
表结构和表数据就不公示了,查询的表user_role,主键是id,每条记录有parentid字段(对应该记录的父节点,当然,一个父节点自然会有一个以上的子节点嘛)
CREATE FUNCTION `getChildList`(rootId INT) RETURNS varchar(1000) BEGINDECLARE sChildList VARCHAR(1000);DECLARE sChildTemp VARCHAR(1000);SET sChildTemp =cast(rootId as CHAR);WHILE sChildTemp is not null DO IF (sChildList is not null) THENSET 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) BEGINDECLARE sParentList varchar(1000);DECLARE sParentTemp varchar(1000);SET sParentTemp =cast(rootId as CHAR);WHILE sParentTemp is not null DOIF (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));*/
弄完了,pm说不要弄存储结构,在java里面多查几次吧。。。存储结构有很多优点,包括加快查询速度、提高安全性等等,但是会加大数据库负荷,很多文章建议结合使用,个人也觉得少用点会好些。