MySQL递归获取伞下所有ID函数
需要在MySQL数据库中配置
group_concat_max_len = 4294967295
函数如下:
CREATE DEFINER=`root`@`%` FUNCTION `queryChilds`(`uid` varchar(32)) RETURNS longtext CHARSET utf8
BEGIN
DECLARE sTemp LONGTEXT;
DECLARE sTempChd LONGTEXT;
SET sTemp = '';
SET sTempChd = uid;
WHILE sTempChd is not NULL DO
SET sTemp = CONCAT(sTemp,',',sTempChd);
SELECT group_concat(id) INTO sTempChd FROM t_user where FIND_IN_SET(referrer,sTempChd)>0;
END WHILE;
return sTemp;
END
MySQL根据配置文件会限制Server接受的数据包大小。
有时候大的插入和更新会受 max_allowed_packet 参数限制,导致写入或者更新失败。(比方说导入数据库,数据表)
mysql> show VARIABLES like '%max_allowed_packet%';
+--------------------------+------------+
| Variable_name | Value |
+--------------------------+------------+
| max_allowed_packet | 1024 |
| slave_max_allowed_packet | 1073741824 |
+--------------------------+------------+
