Mysql之樹形查詢

1.首先創建一個樹形結構的表

2.對於mysql沒有直接的遞歸查詢函數可查詢出所有子節點,因此,寫一個sql函數,來實現遞歸查詢

delimiter //
CREATE FUNCTION `getChildrenList`(rootId INT)
RETURNS varchar(1000)


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(id) INTO sTempChd FROM province where FIND_IN_SET(pid,sTempChd)>0;
END WHILE;
RETURN sTemp;
END
//

註釋:

cantact---將字符串連接

group_cantact----將相同的列合併

FIND_IN_SET(列名,查詢的字符串列)----查詢列名是否在字符串列中存在,存在則返回查詢的字段(這裏是id)


參考文章:

http://blog.csdn.net/qq_27682041/article/details/73345652

http://blog.csdn.net/chengxuyuanyonghu/article/details/47148097

http://hchmsguo.iteye.com/blog/555543

https://www.cnblogs.com/yzryc/p/6397953.html



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章