mysql 简单递归_mysql处理递归的一个例子

本文介绍了一个使用存储过程来递归获取数据库中子模型的方法。该存储过程接受起始ID和管理员标识作为输入参数,并通过创建临时表来存储递归过程中获取到的所有子模型及其路径信息。

只是一个例子,简单记录一下!

delimiter //

drop procedure if exists getChildModel //

CREATE PROCEDURE getChildModel(IN startId INT,in inAdmin int)

BEGIN

DECLARE _id varchar(4) DEFAULT '0';

DECLARE _path VARCHAR(2000);

DECLARE _Last bigint DEFAULT 0;

CREATE TEMPORARY TABLE IF NOT EXISTS temp_table (

id varchar(4) NOT NULL ,

path varchar(2000) default NULL,

PRIMARY KEY (id)

) ENGINE=InnoDB TYPE = HEAP;

CREATE TABLE IF NOT EXISTS pp_table (

topid int not null,

id varchar(4) NOT NULL ,

path varchar(2000) default NULL,

PRIMARY KEY (topid,id)

) ENGINE=InnoDB;

delete from temp_table;

insert into temp_table(id, path)

select startId, model_parent_Id from gweb_model src where model_aiid = startId;

set _id = startId;

set _path = startId;

WHILE ( _id <> '0') DO

insert into temp_table(id, path)

select model_aiid, model_parent_Id

from gweb_model src where src.model_parent_Id=_id ;

set _last = _id;

set _id = 0;

select id, path into _id, _path from temp_table where id>_last limit 1;

END WHILE;

insert into pp_table select startId,id,path from temp_table;

insert into dzy_permission_all select inAdmin,id from temp_table;

truncate table temp_table;

END

//[@more@]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值