MySQL i grupa CONCAT () maksymalna długość

Używam GROUP_CONCAT() W zapytaniu MySQL do konwersji wielu wierszy w pojedynczy ciąg znaków. Jednak maksymalna długość wyniku tej funkcji to 1024 znaki.

Jestem bardzo świadomy, że mogę zmienić param group_concat_max_len, aby zwiększyć ten limit:

SET SESSION group_concat_max_len = 1000000;

Jednak na serwerze, którego używam, nie mogę zmienić żadnego param. Nie używając poprzedniego zapytania i nie edytując żadnego pliku konfiguracyjnego.

Więc moje pytanie brzmi:: Czy istnieje inny sposób na uzyskanie wyjścia wielokrotnego zapytanie wiersza do pojedynczego ciągu?
Author: Cleb, 2010-04-02

6 answers

SET SESSION group_concat_max_len = 1000000;

Jest tymczasowym, sesyjnym zakresem, ustawieniem. Dotyczy to tylko bieżącej sesji, powinieneś jej używać w ten sposób.

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

Możesz to zrobić nawet podczas współdzielenia hostingu, ale gdy używasz innej sesji, musisz powtórzyć polecenie 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/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-19 13:12:00

Poprawnym parametrem do ustawienia maksymalnej długości jest:

SET @@group_concat_max_len = value_numeric;

value_numeric musi być > 1024; domyślnie wartością group_concat_max_len jest 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/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-24 21:58:26

Włącz to ustawienie w xampp my.plik konfiguracyjny ini:

[mysqld]
group_concat_max_len = 1000000

Następnie uruchom ponownie 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/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-09 13:55:17

Prawidłowa składnia to mysql> SET @@global.group_concat_max_len = integer;
Jeśli nie masz uprawnień do tego na serwerze, na którym znajduje się Twoja baza danych, użyj zapytania typu:
mySQL="SET @@session.group_concat_max_len = 10000;" lub inna wartość.
Następna linia:
SET objRS = objConn.Execute(mySQL) Twoje zmienne mogą się różnić.
wtedy
mySQL="SELECT GROUP_CONCAT(......);" etc
Używam ostatniej wersji, ponieważ nie mam uprawnień do zmiany domyślnej wartości 1024 globalnie (za pomocą cPanel).
Mam nadzieję, że to pomoże.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-31 06:42:47

Możesz spróbować tego

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/doraprojects.net/template/agent.layouts/content.php on line 54
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');

To zapytanie jest trochę dziwne, ale nie potrzebuje innego zapytania, aby zainicjować zmienną; i może być osadzone w bardziej złożonym zapytaniu. Zwraca wszystkie pola ' 2 ' oddzielone średnikiem.

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/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-11 20:59:45