我的查询有问题
SELECT usuarios.UsuarioId, usuarios.UsuarioNombre,
usuarios.UsuarioFechaRegistro, usuarios.UsuarioFecha,
usuarios.UsuarioCompartir, usuarios.UsuarioPrivacidad,
usuarios.UsuarioAvatar, usuarios.PlataformaDefecto,
GROUP_CONCAT( DISTINCT usuarios_plataformas.PlataformaId) as Plataformas,
CONCAT('[', GROUP_CONCAT(
DISTINCT CASE WHEN follows.UsuariosSiguiendo = usuarios.UsuarioId
THEN (SELECT CONCAT('{"UsuarioNombre":"', usuarios.UsuarioNombre, '", "UsuarioId":"', usuarios.UsuarioId, '"}')
FROM usuarios
WHERE UsuarioId = follows.UsuariosSeguido) END), ']') as Siguiendo,
CONCAT('[', GROUP_CONCAT(
DISTINCT CASE WHEN follows.UsuariosSeguido = usuarios.UsuarioId
THEN (SELECT CONCAT('{"UsuarioNombre":"', usuarios.UsuarioNombre, '", "UsuarioId":"', usuarios.UsuarioId, '"}')
FROM usuarios
WHERE UsuarioId = follows.UsuariosSiguiendo) END), ']') as Seguido
FROM (`usuarios`)
LEFT JOIN `usuarios_plataformas` ON `usuarios_plataformas`.`UsuarioId` = `usuarios`.`UsuarioId`
LEFT JOIN `follows` ON `follows`.`UsuariosSiguiendo` = `usuarios`.`UsuarioId`
OR follows.UsuariosSeguido = usuarios.UsuarioId
WHERE `UsuarioNombre` = '50l3r'
GROUP BY `usuarios`.`UsuarioId`
查询会将此结果返回给我:http://gyazo.com/92687af3657239bd7c069ed165c5253c
在我的查询中,我将结果格式化为json。但在“Siguiendo”,“Seguido”栏目中,结果分为极限字符。
非常感谢您的帮助
答案 0 :(得分:2)
那是因为你正在使用GROUP_CONCAT()并且它对字符串长度有限制,这是由它形成的。这是group_concat_max_len - 因此您应该调整它以适合您的任务。 - 但请注意,在任何情况下都无法克服max unsigned longint(4294967295
系统为32-bit
,18446744073709547520
系统为64-bit
您可以通过
动态更改限制SET [GLOBAL | SESSION] group_concat_max_len = val;
然而,还有另一个更常见的max_allowed_packet限制。它限制了一个数据包或任何生成/中间字符串的最大大小,因此它也应该适合您的问题。