mysql树型结构查询父类函数,mysql递归查询父类函数
================================
©Copyright 蕃薯耀 2022-10-10
https://www.cnblogs.com/fanshuyao/
一、MySQL 中创建函数时出现错误的解决方法
此步可跳过不看,有错再回头看。
--1、在 MySQL 数据库中执行以下语句,临时生效,重启后失效 set global log_bin_trust_function_creators=TRUE; --2、在配置文件 my.ini 的 [mysqld] 配置,永久生效 log_bin_trust_function_creators=1
二、Mysql树型结构查询父节点
--删除函数 --drop function getSwmsGoodsType; DELIMITER // CREATE FUNCTION getSwmsGoodsType(rootId VARCHAR(20)) RETURNS VARCHAR (1000) BEGIN DECLARE fid VARCHAR(100) DEFAULT ''; DECLARE concat_str VARCHAR(1000) DEFAULT rootId; -- 节点ID(临时变量) WHILE rootId IS NOT NULL DO #修改点:parentI为父类ID,swms_goods_type为表名 SET fid =(SELECT parentId FROM swms_goods_type WHERE id = rootId); IF fid IS NOT NULL THEN SET concat_str = CONCAT(concat_str, ',', fid); SET rootId = fid; ELSE SET rootId = fid; END IF; END WHILE; RETURN concat_str; END // DELIMITER ;
三、Mysql获取树型结构最上层(顶层)父节点
--获取最上层父节点 DELIMITER // CREATE FUNCTION getSwmsGoodsTypeTop(node_id BIGINT) RETURNS BIGINT BEGIN DECLARE pid BIGINT DEFAULT NULL; DECLARE top_parent_id BIGINT DEFAULT node_id; -- 节点ID(临时变量) WHILE node_id IS NOT NULL DO #修改点:parentI为父类ID,swms_goods_type为表名 SET pid =(SELECT parentId FROM swms_goods_type WHERE id = node_id); IF pid IS NOT NULL THEN SET node_id = pid; SET top_parent_id = pid; ELSE SET node_id = pid; END IF; END WHILE; RETURN top_parent_id; END // DELIMITER ;
四、使用示例
-- 根据函数查询父节点 6为要查询的哪个子节点id SELECT getSwmsGoodsType(18) id; SELECT * FROM swms_goods_type WHERE FIND_IN_SET(id, getSwmsGoodsType(18)); --查询最上层的父节点 SELECT getSwmsGoodsTypeTop(18) tpid; SELECT * FROM swms_goods_type WHERE FIND_IN_SET(id, getSwmsGoodsTypeTop(18));
(时间宝贵,分享不易,捐赠回馈,^_^)
================================
©Copyright 蕃薯耀 2022-10-10
https://www.cnblogs.com/fanshuyao/
今天越懒,明天要做的事越多。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决