问题描述
我有一个查询的问题
选择usuarios.UsuarioId,usuarios.UsuarioNombre,usuarios.UsuarioFechaRegistro,usuarios.UsuarioFecha,usuarios.UsuarioCompartir,usuarios.UsuarioPrivacidad, usUarios.UuarioAvatar,usuarios.PlataformaDefecto,GROUP_CONCAT(DISTINCT usuarios_plataformas.PlataformaId)as Plataformas,CONCAT('[',GROUP_CONCAT(DISTINCT CASE WHEN follows.UsuariosSiguiendo = usuarios.UsuarioId THEN(SELECT CONCAT(' ('[',GROUP_CONCAT(')')作为Siguiendo,CONCAT('[',GROUP_CONCAT(')')的用法是使用UUuario.UuarioNombre,',UsuarioId:',usuarios.UsuarioId, DISTINCT CASE WHEN following.UsuariosSeguido = usuarios.UsuarioId THEN(SELECT CONCAT('USUARYNombre:'usuarios.UsuarioNombre,',UsuarioId:',usuarios.UsuarioId,'})FROM usuarios WHERE ( usuarios )LEFT JOIN usuarios_plataformas ON usuarios_plataformas 。 UsuarioId = usuarios 。 UsuarioId LEFT JOIN 之后之后之后。 UsuariosSiguiendo = usuarios 。 UsuarioId OR follow.UsuariosSeguido = usuarios.UsuarioId WHERE UsuarioNombre ='50l3r'GROUP BY usuarios 。 UsuarioId
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
查询会返回此结果:
在我的查询中,我将结果形成为json。
In my query, i formated results as json. But in "Siguiendo","Seguido" columns, results split for a limit characters.
非常感谢您的帮助
推荐答案
这是因为您使用,它对字符串长度有限制,它由它形成。这是 - 因此您应该调整它以适合您的任务。 - 但是请注意,在任何情况下它都不能克服max unsigned longint( 4294967295 for 32位系统和 18446744073709547520 64位系统)
That's because you're using GROUP_CONCAT() and it has restriction for string length, which is formed by it. This is group_concat_max_len - so you should adjust it to fit your task. - but be aware that it can't overcome max unsigned longint in any case (that's 4294967295 for 32-bit systems and 18446744073709547520 for 64-bit systems)
可以通过
SET [GLOBAL | SESSION] group_concat_max_len = val;
但是,还有一个更常见的限制。它限制一个数据包或任何生成的/中间字符串的最大大小,所以它也应该适合你的问题。
However, there's another more common max_allowed_packet restriction. It restricts the maximum size of one packet or any generated/intermediate string, so it should fit your issue too.
这篇关于在mysql查询列中限制字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!