php - mysql 查询中的 group_concat 提前停止

标签 php mysql

我在 mysql 查询中遇到 group_concat 问题:

它停在513号码上!

这是正常查询,它返回 813 行:

SELECT * 
FROM survey_votes
WHERE sid =  '4'

现在问题出在这个查询上:

SELECT s.*,     
    GROUP_CONCAT(v.oid) AS myoids
    FROM survey s
    LEFT JOIN survey_votes v ON s.sid=v.sid
    WHERE s.sid='4'

这将返回 1 行,其中包含最多 513 个字符串的数组“myoids”。

表“调查”的结构:

sid  int(11)          
stitle   varchar(255)
sdesc    text     
soptions text    
sdate    datetime  
active   int(1)

调查投票:

vid int(11) 
sid int(11)     
uid int(11)     
uip varchar(255)    
oid int(11)     
sdate   datetime

myoids 最多仅包含 513 行:

Array
(
    [0] => 1
    [1] => 1
    [2] => 3
    .........
    [511] => 1
    [512] => 
)

最佳答案

这是因为MySQL截断了GROUP_CONCAT的结果达到一定限制后:

The result is truncated to the maximum length that is given by the group_concat_max_len system variable, which has a default value of 1024.

尝试增加 group_concat_max_len 的值使用SET命令变量:

SET SESSION group_concat_max_len = 1024 * 1024; -- 1MB

关于php - mysql 查询中的 group_concat 提前停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14702177/

相关文章:

php - 从文件中读取时多少行太多?

php - Socket.io 与 laravel POST 400 错误请求

mysql - 在 SQL 中插入一行并在存储过程中设置变量?

MySql Concat First, Middle 和 Last

php - 将我的 Codeigniter 项目移至另一台服务器以获得空白屏幕

php - 从 fancybox iframe 表单中更新数据库

mysql - 查询多对多关系(如果为空也返回)

php - 使用基于 jQuery 的 Ajax/PHP 同步效果?

php - 执行 mySql 的 php 循环中的错误处理

php - Mysql查询倒排索引数据