怎么在MySQL中通过自定义函数实现递归查询父级ID或者子级ID
发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,这篇文章给大家介绍怎么在MySQL中通过自定义函数实现递归查询父级ID或者子级ID,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、环境准备1、建表CREATE TABLE `t
千家信息网最后更新 2025年01月25日怎么在MySQL中通过自定义函数实现递归查询父级ID或者子级ID
这篇文章给大家介绍怎么在MySQL中通过自定义函数实现递归查询父级ID或者子级ID,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
一、环境准备
1、建表
CREATE TABLE `table_name` ( `id` int(11) NOT NULL AUTO_INCREMENT, `status` int(255) NULL DEFAULT NULL, `pid` int(11) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
2、插入数据
INSERT INTO `table_name` VALUES (1, 12, 0);INSERT INTO `table_name` VALUES (2, 4, 1);INSERT INTO `table_name` VALUES (3, 8, 2);INSERT INTO `table_name` VALUES (4, 16, 3);INSERT INTO `table_name` VALUES (5, 32, 3);INSERT INTO `table_name` VALUES (6, 64, 3);INSERT INTO `table_name` VALUES (7, 128, 6);INSERT INTO `table_name` VALUES (8, 256, 7);INSERT INTO `table_name` VALUES (9, 512, 8);INSERT INTO `table_name` VALUES (10, 1024, 9);INSERT INTO `table_name` VALUES (11, 2048, 10);
二、MySQL函数的编写
1、查询当前节点的所有父级节点
delimiter // CREATE FUNCTION `getParentList`(root_id BIGINT) RETURNS VARCHAR(1000) BEGIN DECLARE k INT DEFAULT 0; DECLARE fid INT DEFAULT 1; DECLARE str VARCHAR(1000) DEFAULT '$'; WHILE rootId > 0 DO SET fid=(SELECT pid FROM table_name WHERE root_id=id); IF fid > 0 THEN SET str = concat(str,',',fid); SET root_id = fid; ELSE SET root_id=fid; END IF; END WHILE; RETURN str; END // delimiter ;
2、查询当前节点的所有子节点
delimiter //CREATE FUNCTION `getChildList`(root_id BIGINT) RETURNS VARCHAR(1000) BEGIN DECLARE str VARCHAR(1000) ; DECLARE cid VARCHAR(1000) ; DECLARE k INT DEFAULT 0; SET str = '$'; SET cid = CAST(root_id AS CHAR);12 WHILE cid IS NOT NULL DO IF k > 0 THEN SET str = CONCAT(str,',',cid); END IF; SELECT GROUP_CONCAT(id) INTO cid FROM table_name WHERE FIND_IN_SET(pid,cid)>0; SET k = k + 1; END WHILE; RETURN str; END // delimiter ;
三、测试
1、获取当前节点的所有父级
SELECT getParentList(10);
2、获取当前节点的所有字节
SELECT getChildList(3);
关于怎么在MySQL中通过自定义函数实现递归查询父级ID或者子级ID就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
节点
查询
函数
中通
递归
内容
更多
帮助
不错
兴趣
字节
小伙
小伙伴
数据
文章
环境
知识
篇文章
准备
参考
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
中国互联网科技发展趋势
亚太通力服务器怎么操作视频
实时报告形势与政策网络安全问题
播放五年级网络安全手抄报简单
软件开发介绍ppt
qq数据库破解
数据库的归档值得是什么
国家网络安全委员会成立
阿里云服务器 地域选择
网络安全人员方面
数据库系统原理存储过程考试
淘客数据库
成都移动服务器排名
信阳计算机网络技术教程
关系数据库中的关系与表格的不同
数据库字符运算符
信息网络安全工作制度
软件开发项目验收材料准备
java软件开发就业方向
资源分享服务器
计算机网络技术顶岗实习第一周
数据库优化方式
服务器配置评估
数据库的归档值得是什么
计算机网络技术应用费用
湖南科泰电脑软件开发
中国黑客保卫网络安全
某数据库中有一个学号字段
网络安全彩色简笔画
数据库日期相减计算月份