mysql 实现树状查询

 

DELIMITER $$

DROP PROCEDURE IF EXISTS `sx_finance`.`pro_channel_class`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `pro_channel_class`(in parentid int)
begin
    declare level smallint default 0;
    declare cnt int default 0;
    create temporary table tt(class_id int,class_name varchar(20),PARENT_ID int,level smallint,sort varchar(1000));
    create temporary table tt2(class_id int,class_name varchar(20),PARENT_ID int,level smallint,sort varchar(1000));
    insert into tt select class_id,class_name,PARENT_ID,level,cast(class_id as char) from CHANNEL_CLASS where PARENT_ID=parentid;
    select row_count() into cnt;
    insert into tt2 select * from tt;
    while cnt>0 do
        set level=level+1;
        truncate table tt;
        insert into tt select a.class_id,a.class_name, a.PARENT_ID,level,concat(b.sort,a.class_id) from CHANNEL_CLASS a,tt2 b where a.PARENT_ID=b.class_id and b.level=level-1;
        select row_count() into cnt;
        insert into tt2 select * from tt;
    end while;
 select class_id, concat(space(a.level*2),'|---',a.class_name) class_name from tt2 a order by sort;
    drop table tt;
    drop table tt2;
end$$

DELIMITER ;

 

显示如下:

 

class_idclass_name
4|---首页
11|---的沙发的
12|---发达
18|---f
5|---首页2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值