0

我在 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] => 
)
4

3 回答 3

1

这是因为 MySQL 会GROUP_CONCAT在一定限制后截断结果:

结果被截断为 group_concat_max_len 系统变量给出的最大长度,默认值为 1024。

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

SET SESSION group_concat_max_len = 1024 * 1024; -- 1MB
于 2013-02-05T07:43:00.260 回答
0

查询应该是

SELECT s.*,     
GROUP_CONCAT(v.oid) AS myoids
FROM survey s
LEFT JOIN survey_votes v ON s.sid=v.sid
WHERE v.sid='4'
      // here was the problem it should be v.sid not s.sid

因为在您的第一个查询中,您从survey_votes哪里选择sid = '4'

SELECT * 
FROM survey_votes
WHERE sid =  '4'
于 2013-02-05T07:28:29.670 回答
0

这会返回多少行:

SELECT * 
FROM survey
WHERE sid =  '4'

这会返回 513 行吗?

于 2013-02-05T07:42:08.037 回答