2013-02-05 175 views
0

我在mysql查詢中遇到group_concat存在問題:group_concat在mysql查詢提前停止

它停在513號碼!

這是正常的查詢,並返回813行:

SELECT * 
FROM survey_votes 
WHERE sid = '4' 

和現在的問題是與此查詢:

​​

這將返回1行包含數組「myoids」到513個字符串。

表 '調查' 的strucutr:

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

survey_votes:

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] => 
) 
+0

有趣。你的目的是爲了問題嗎?糾正它是不可能的。 – Burkhard

回答

1

這是因爲MySQL某一限度後截斷的GROUP_CONCAT結果:

的結果被截斷其具有 1024的缺省值是由 group_concat_max_len系統變量給定的最大長度, 。

嘗試使用SET命令增加group_concat_max_len變量的值:

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

是的,這是正確的答案!現在我該如何解決並增加它? –

+0

SET [GLOBAL | SESSION] group_concat_max_len = 2048! –

+0

但仍然堅持513!我應該重新啓動mysql服務嗎? –

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_votessid = '4'

SELECT * 
FROM survey_votes 
WHERE sid = '4' 
+0

不錯的一點,但仍然堅持513! –

0

選擇多少行做到這一點的回報:

SELECT * 
FROM survey 
WHERE sid = '4' 

這是否返回513行?

+0

只有1個,其中包含有關調查的信息。 –