MySQL y GRUPO CONCAT () longitud máxima


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

Soy muy consciente de que puedo cambiar el parámetro 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 param. No mediante el uso de la consulta anterior y no mediante la edición de cualquier archivo de configuración.

Así que mi pregunta es: ¿Hay alguna otra manera de obtener la salida de un múltiplo consulta de fila en una sola cadena?

Author: Cleb, 2010-04-02

6 answers

SET SESSION group_concat_max_len = 1000000;

Es una configuración temporal de ámbito de sesión. Solo se aplica a la sesión actual Debe usarlo de esta manera.

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

Puede hacer esto incluso en el alojamiento compartido, pero cuando utiliza una otra sesión, debe repetir el comando SET SESSION.

 283
Author: keatkeat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-19 13:12:00

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.

 44
Author: oscar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-24 21:58:26

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

[mysqld]
group_concat_max_len = 1000000

Luego reinicie xampp mysql

 7
Author: Chinnadurai Ramalingam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-09 13:55:17

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.
Siguiente línea:
SET objRS = objConn.Execute(mySQL) sus variables pueden ser diferentes.
entonces
mySQL="SELECT GROUP_CONCAT(......);" etc
Uso la última versión ya que no tengo los privilegios para cambiar el valor predeterminado de 1024 globalmente (usando cPanel).
Espero que esto ayude.

 3
Author: Ola Balstad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-31 06:42:47

Puedes probar esto

SET GLOBAL group_concat_max_len = 1000000;
 3
Author: Mohamed El Mrabet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-26 15:51:26
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 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; 
 2
Author: ZeWaren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-11 20:59:45