mysql树查询,sql递归函数
select cateID from goodscategory where FIND_IN_SET(cateID ,getGoodsChildLst('43242'))
CREATE FUNCTION `getGoodsChildLst`(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(cateID) INTO sTempChd FROM goodscategory where FIND_IN_SET(parentCateID,sTempChd)>0
END WHILE
RETURN sTemp
END
一般比较普遍的就是四种方法:(具体见 SQL Anti-patterns这本书)
因为不支持递归查询,所以Mysql官方当时推荐的是第三种方式:Nested Sets。我是用过的,非常难受。现在支持递归查询,我们可以使用第一种。
其实我还用了一种,一列维持顺序,一列维持层级,有空可以把实现写出来看看。
英文好的朋友请移步到这里: Managing Hierarchical Data in MySQL Using the Adjacency List Model ,不好的同学跟我一起来。
直接语句说明:
好,就这些吧。我是姜友华,下次见。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)