CREATE FUNCTION `getChildLst`(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(cid) INTO sTempChd FROM zz_category where FIND_IN_SET(pid,sTempChd)>0; END WHILE; RETURN sTemp; END
有可能会遇到 This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary 的问题,只需要在MySQL中执行如下命令就可以了:
set global log_bin_trust_function_creators=TRUE;
查询的SQL语句:
select getChildLst(133) cids;
结果:
+---------------------------+ | cids | +---------------------------+ | $,133,137,141,142,143,144 | +---------------------------+