with postgres group_concat ejemplos mysql group-concat

postgres - mysql concat rows with comma



MySQL y GROUP_CONCAT() longitud máxima (6)

Estoy usando GROUP_CONCAT() en una consulta de MySQL para convertir varias filas en una sola cadena. Sin embargo, la longitud máxima del resultado de esta función es de 1024 caracteres.

Soy muy consciente de que puedo cambiar el group_concat_max_len para aumentar este límite:

SET SESSION group_concat_max_len = 1000000;

Sin embargo, en el servidor que estoy usando, no puedo cambiar ningún parámetro. No utilizando la consulta anterior y no editando ningún archivo de configuración.

Entonces, mi pregunta es: ¿hay alguna otra manera de obtener el resultado de una consulta de varias filas en una sola cadena?


El parámetro correcto para establecer la longitud máxima es:

SET @@group_concat_max_len = value_numeric;

value_numeric debe ser> 1024; por defecto, el valor group_concat_max_len es 1024.


Incluya esta configuración en el archivo de configuración de xampp my.ini:

[mysqld] group_concat_max_len = 1000000

Luego reinicie xampp mysql


La sintaxis correcta es mysql> SET @@global.group_concat_max_len = integer;
Si no tiene los privilegios para hacer esto en el servidor donde reside su base de datos, utilice una consulta como:
mySQL = "SET @@session.group_concat_max_len = 10000;" o un valor diferente.
Línea siguiente:
SET objRS = objConn.Execute(mySQL) sus variables pueden ser diferentes.
entonces
mySQL="SELECT GROUP_CONCAT(......);" etc
Utilizo la última versión ya que no tengo los privilegios para cambiar el valor predeterminado de 1024 globalmente (usando cPanel).
Espero que esto ayude.


Puedes probar esto

SET GLOBAL group_concat_max_len = 1000000;


CREATE TABLE some_table ( field1 int(11) NOT NULL AUTO_INCREMENT, field2 varchar(10) NOT NULL, field3 varchar(10) NOT NULL, PRIMARY KEY (`field1`) ); INSERT INTO `some_table` (field1, field2, field3) VALUES (1, ''text one'', ''foo''), (2, ''text two'', ''bar''), (3, ''text three'', ''data''), (4, ''text four'', ''magic'');

Esta consulta es un poco extraña pero no necesita otra consulta para inicializar la variable; y se puede incrustar en una consulta más compleja. Devuelve todos los ''field2'' separados por un punto y coma.

SELECT result FROM (SELECT @result := '''', (SELECT result FROM (SELECT @result := CONCAT_WS('';'', @result, field2) AS result, LENGTH(@result) AS blength FROM some_table ORDER BY blength DESC LIMIT 1) AS sub1) AS result) AS sub2;


SET SESSION group_concat_max_len = 1000000;

Es una configuración temporal, de sesión, alcance. Solo se aplica a la sesión actual. Deberías usarlo así.

SET SESSION group_concat_max_len = 1000000; select group_concat(column) from table group by column

Puede hacer esto incluso al compartir hosting, pero cuando usa otra sesión, necesita repetir el comando SET SESSION .