[英]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.