怎么在MySQL中通过自定义函数实现递归查询父级ID或者子级ID
发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,这篇文章给大家介绍怎么在MySQL中通过自定义函数实现递归查询父级ID或者子级ID,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、环境准备1、建表CREATE TABLE `t
千家信息网最后更新 2024年11月19日怎么在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安全错误
数据库的锁怎样保障安全
数据库项目翻译词库
tbc怀旧服服务器布鲁部落
检察院如何加强网络安全工作
小学开展网络安全报告
小学网络安全知识教育计划
南充有哪些软件开发公司
新晨科技有没有网络安全概念
县政协网络安全保障方案
东方国信新一代分析型数据库
哪些学校计算机网络技术好
乐享易购北京网络技术有限公司
校园正能量网络安全
浙江菜鸟网络技术有限公司东莞
中职生计算机网络技术
网络技术用反码
富士康用的软件开发
软件开发市场空间有多大
网络安全 地址转换
江苏统一软件开发价格标准
福州千城网络技术有限公司
服务器安装教程
王者网络技术工作室
单机传奇服务器怎么安装
微信群管软件开发
12306阿里云服务器多厉害
网络安全资金申请报告
sql数据库更换教程
赤峰做app的软件开发
数据库筛选偶数条件语句
网络安全教育的内容是什么