簡體   English   中英

mysql查詢中的group_concat提前停止

[英]group_concat in mysql query stops early

我在mysql query中的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)

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

這是因為MySQL在特定限制后會截斷GROUP_CONCAT的結果:

結果將被截斷為由group_concat_max_len系統變量指定的最大長度,該默認值的默認值為1024。

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

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

查詢應該是

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'

返回多少行:

SELECT * 
FROM survey
WHERE sid =  '4'

這會返回513行嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM