码上敲享录 > sql增删改查之常见报错异常解答 > mysql在存储过程中根据父id查找所有下级节点,递归

mysql在存储过程中根据父id查找所有下级节点,递归

上一章章节目录下一章 2017-09-30已有2866人阅读 评论(0)

mysql在存储过程中根据父id查找所有下级节点,递归。

SET @sTemp = '$';  

SET @sTempChd =cast(5 as CHAR);  

WHILE @sTempChd is not null DO  

SET @sTemp = concat(@sTemp,',',@sTempChd);

SELECT group_concat(id) into  @sTempChd FROM account_item  where FIND_IN_SET(parent_id,@sTempChd)>0;  

END WHILE;

SELECT @sTemp;

假如最顶部的父节点的id为5,查找5下的所有子孙节点的id,拼接成字符串,用逗号隔开。

结果是:$,5,6,7,8,10,11,12,14,17,18,45,9,13,15,16


得到根节点下所有子ids后,就可以使用sql 的in来查找根节点下的所有记录

where id in($,5,6,7,8,10,11,12,14,17,18,45,9,13,15,16)



0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交