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