成都网站建设设计

将想法与焦点和您一起共享

oracle中的层级查询用mysql替换

    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#))



分享名称:oracle中的层级查询用mysql替换
文章源于:http://chengdu.cdxwcx.cn/article/jhscep.html