欢迎光临
我们一直在努力

oracle中的层级查询用mysql替换

    Oracle的Start with…Connect By实现了树的递归查询,但是现在要求用MYSQL也实现相同的递归查询树的功能。这个功能是我从以前从未使用到过的,于是,我上网查询、找了一些资料开始做了起来。

    原始的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#))


赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。