我在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'
这将返回包含数组'myoids'的1行,最多包含513个字符串。
表'调查'的结构:
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 :(得分:1)
这是因为MySQL在某个限制之后截断GROUP_CONCAT
的结果:
结果被截断为由。给出的最大长度 group_concat_max_len系统变量,其默认值为 1024。
尝试使用SET
命令增加group_concat_max_len
变量的值:
SET SESSION group_concat_max_len = 1024 * 1024; -- 1MB
答案 1 :(得分: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'
答案 2 :(得分:0)
这会返回多少行:
SELECT *
FROM survey
WHERE sid = '4'
这会返回513行吗?