重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Oracle的Start with...Connect By实现了树的递归查询,但是现在要求用MySQL也实现相同的递归查询树的功能。这个功能是我从以前从未使用到过的,于是,我上网查询、找了一些资料开始做了起来。
成都创新互联公司是一家朝气蓬勃的网站建设公司。公司专注于为企业提供信息化建设解决方案。从事网站开发,网站制作,网站设计,网站模板,微信公众号开发,软件开发,小程序制作,10年建站对成都酒楼设计等多个方面,拥有多年建站经验。
原始的oracle语句为
select '|'||c.seq_cate||'|'
from osr_category c
start with c.seq_cate = #serviceCategory#
connect by prior c.seq_cate = c.parent_id)
mysql没有相应的方法实现递归查询树的功能,所以只好根据网上所说的那样写个函数来实现:
CREATE FUNCTION getChildList(rootId VARCHAR(1000))
RETURNS VARCHAR(1000)
BEGIN
DECLARE pTemp VARCHAR(1000);
DECLARE cTemp VARCHAR(1000);
SET pTemp='$';
SET cTemp=rootId;
WHILE cTemp is not null DO
set pTemp=CONCAT(pTemp,',',cTemp);
SELECT GROUP_CONCAT(SEQ_CATE) INTO cTemp from osr_category
WHERE FIND_IN_SET(PARENT_ID,cTemp)>0;
END WHILE;
RETURN pTemp;
END
随后其sql语句应该改为:
select '|'||c.seq_cate||'|'
from osr_category c
where FIND_IN_SET(c.seq_cate, getChildList(#serviceCategory#))