当前位置:Gxlcms > 数据库问题 > MySQL自定义函数递归查询

MySQL自定义函数递归查询

时间:2021-07-01 10:21:17 帮助过:34人阅读

DEFINER=`root`@`%` FUNCTION `getChildList`(rootId INT) RETURNS text CHARSET utf8 BEGIN DECLARE sTemp text; DECLARE sTempChd text; 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 sys_company where FIND_IN_SET(parent_id,sTempChd)>0; END WHILE; RETURN sTemp; END

通常 group_concat 有长度限制,当结果大于这个限制时就会导致查询出的数据不全,解决方案:改变group_concat 的最大长度。

首先查询一下目前group_concat 的长度限制(默认好像是1024):

SELECT @@global.group_concat_max_len;

修改长度:

SET GLOBAL group_concat_max_len=102400; 

修改后可以在运行下查询命令,看一下长度是否修改成功。

但这种方法mysql服务重启后就会失效。彻底修改需要修改mysql的配置文件:

在MySQL配置文件中my.conf或my.ini中添加:

  #[mysqld]
  group_concat_max_len=102400

   或group_concat_max_len = -1  # -1为最大值

重启MySQL服务即可。

MySQL自定义函数递归查询

标签:def   运行   cas   ast   sele   rom   结果   while   定义函数   

人气教程排行