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?
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
.
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.
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
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.
entoncesmySQL="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.
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;
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;
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