標籤: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;
返回的結果集如下所示:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/7F/91/wKioL1cjAyTjGkKOAABp-jQtioo675.png" title="menu.png" alt="wKioL1cjAyTjGkKOAABp-jQtioo675.png" />
參考文檔:http://www.2cto.com/database/201209/152513.html
本文出自 “豬會飛” 部落格,請務必保留此出處http://jiyanle.blog.51cto.com/6932197/1768987
mysql遞迴層次查詢