最近在开发中在MySQL中查询树形结构,MySQL中没有Oracle中的树形结构的查询语法,网上使用存储函数解决,下面是使用时候的一点注意吧,
create table treeNodes
( id int primary key, nodename varchar(20), pid int );
/***利用函数得到所有的子节点号***/
delimiter //
create function getchildList(rootId int)
returns varchar(1000)
BEGIN
DECLARE sTemp VARCHAR(1000);
DECLARE sTempChd VARCHAR(1000);
SET sTemp = '$';
SET sTempChd =cast(rootId as CHAR);
WHILE sTempChd is not null DO
SET sTemp = concat(sTemp,',',sTempChd);
SELECT group_concat(id) INTO sTempChd FROM treeNodes
where FIND_IN_SET(pid,sTempChd)>0;
END WHILE;
RETURN sTemp;
END //
delimiter;
select getchildList(1);
select * from treenodes where find_in_set(id,getchildList(8));
/******************/
实际使用的时候出现了问题