码迷,mamicode.com
首页 > 数据库 > 详细

mysql递归层次查询

时间:2016-04-29 20:17:29      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:mysql   递归查询   mysql递归查询   mysql递归   

首先,需要了解两个MySQL的原生函数FIND_IN_SET和group_concat:

使用范例:


SELECT FIND_IN_SET(‘a‘,‘a,b,c,d‘);

运行结果:1;


SELECT group_concat(cdbh) FROM ss_menu;

运行结果:1,3,4,6,7,8,9,10,……等;


创建树形递归函数:

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(cdbh) INTO sTempChd FROM ss_menu
             WHERE FIND_IN_SET(sjcd,sTempChd)>0; 
        END WHILE; 
        RETURN sTemp; 
END
/*查询此函数*/
select * FROM ss_menu m WHERE FIND_IN_SET(cdbh, func_menus(0)) ORDER BY sjcd;


返回的结果集如下所示:

技术分享



参考文档:http://www.2cto.com/database/201209/152513.html

本文出自 “猪会飞” 博客,请务必保留此出处http://jiyanle.blog.51cto.com/6932197/1768987

mysql递归层次查询

标签:mysql   递归查询   mysql递归查询   mysql递归   

原文地址:http://jiyanle.blog.51cto.com/6932197/1768987

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!