================================
©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/
标签:SET,--,查询,fid,mysql,节点,父类,id,SELECT From: https://www.cnblogs.com/fanshuyao/p/16775898.html