我有一个下面列出的功能.当我在LIMIT设置为0,60时调用它,如下所示,它工作正常.但是,每当我将LIMIT增加到70或更高,甚至删除LIMIT时,我在调用函数时出现错误:"行30153被GROUP_CONCAT()"删除".
我已经尝试将varchar值增加到10 000但这没有帮助.据我所知,从错误来看,它们似乎没有足够的空间作为内容的变量.但正如我所提到的,我已经尝试过增加尺寸,但它没有帮助.有任何想法吗??谢谢
DELIMITER $$
DROP FUNCTION IF EXISTS `fnAlbumGetPhotoList` $$
CREATE DEFINER=`root`@`%` FUNCTION `fnAlbumGetPhotoList`(_albumId int) RETURNS varchar(2048) CHARSET utf8
BEGIN
DECLARE _outPhotoList VARCHAR(2048);
SET _outPhotoList = (
SELECT (CAST(GROUP_CONCAT(CONCAT(photoId, '|', photoFileName) separator '~') AS CHAR(10000) CHARACTER SET utf8)) AS recentPhotoList
FROM
(
SELECT photoId, photoFileName
FROM photo
WHERE photoAlbumId = _albumId
AND photoIsDisabled = 0
AND photoIsActive = 1
ORDER BY photoId DESC
LIMIT 0,60
) as subQuery
);
RETURN _outPhotoList;
END $$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
ain*_*ain 79
您可以将group_concat_max_len变量设置为更大的值.或者也许GROUP_CONCAT(DISTINCT ...)用来缩短结果.
She*_*man 14
1)增加结果查询
SET global group_concat_max_len=15000;
OR 中字符数的限制
SET session group_concat_max_len=15000;
2)然后添加global为第一个参数以SET group_concat_max_len=15000;从结果查询中删除重复项.DISTINCT.
您的查询看起来更像是这样的:
SET session group_concat_max_len=15000;
...
... GROUP_CONCAT(DISTINCT CONCAT(photoId, ...)
...
)
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅文档的此部分https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat
| 归档时间: |
|
| 查看次数: |
43097 次 |
| 最近记录: |