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.youkuaiyun.com/qq_27682041/article/details/73345652
http://blog.youkuaiyun.com/chengxuyuanyonghu/article/details/47148097
http://hchmsguo.iteye.com/blog/555543
https://www.cnblogs.com/yzryc/p/6397953.html