mysql树状查询_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_id

class_name

4

|---首页

11

|---的沙发的

12

|---发达

18

|---f

5

|---首页2

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2008-10-10 11:07

浏览 2185

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值