爱玺玺

爱玺玺的生活日记本。wx:lb87626

再理解mysql获取所有子类的函数思想

BEGIN


DECLARE sTemp VARCHAR(1000);


DECLARE sTempChd VARCHAR(1000);

//$sTemp保存家族成员

SET sTemp = '$';

//将第一个父辈家族成员类型转换并放入家庭sTempChd

SET sTempChd =cast(rootId as CHAR);

//如果现在这一代家族成员不是空

WHILE sTempChd is not null DO

//获取这一代家族成员,用来作为下一代的父辈

SET sTemp = concat(sTemp,',',sTempChd);

//将获取的下一代家族成员into到sTempChd,这里会改版sTempChd的内容,不然while判断条件将失效

// FIND_IN_SET(pid,sTempChd),重点是sTempChd是变化的,里面只有当前辈的id,然后看现在pid有没有是当前辈这些id的下一辈记录,如果大于0说明还有子类,继续插入产生下一辈,继续循环。

SELECT group_concat(id) INTO sTempChd FROM shop_commodity where FIND_IN_SET(pid,sTempChd)>0;


END WHILE;


RETURN sTemp;


END




发表评论:

Powered By Z-BlogPHP 1.4 Deeplue Build 150101

Copyright Your WebSite.Some Rights Reserved.

蜀ICP备11021721号-5