mysql函数创建 循环_mysql 创建函数(根据子类,依据父类id,循环查询出所有父类名)...

表结构

表名: tb_game_area

关系字段:  id , parentId, areaName

业务关系

根据已有的子类id ,查询出所在的哪个父类区域下

结果显示

4b1f1fe66a68b9587eb28c0082ea3bcc.png

分析

使用while 循环查询, 根据i是否为1 , 默认查询出当前id 的区名

存在:  赋值给str , 不存在: 修改i=0 ,终止循环 (这里为数据好看,截取了str的最后一个字符);

注意点: CONCAT (返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。)

-- 贴出mysql 语句

DROP FUNCTION IF EXISTS fun_getGameAreaNameBySonId;

CREATE FUNCTION fun_getGameAreaNameBySonId (in_str varchar(255)) RETURNS  varchar(255)

BEGIN

DECLARE i int DEFAULT 0;

DECLARE fid varchar(255);

DECLARE str varchar(255);

DECLARE tempName varchar(255);

set i=1;

WHILE i>0 DO

SET tempName=(SELECT areaName FROM tb_game_area  WHERE id=in_str);

SET fid=(SELECT parentId FROM tb_game_area  WHERE id=in_str);

IF ISNULL(tempName) THEN

SET in_str=null;

set i=0;

set str = left(str,char_length(str)-1);

ELSE

SET str=CONCAT(IFNULL(tempName,''),'>',IFNULL(str,''));

SET in_str=fid;

set i=i+1;

END IF;

END WHILE;

RETURN  str;

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值