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/

posted @ 2022-10-10 15:28  蕃薯耀  阅读(238)  评论(0编辑  收藏  举报