Я использую GROUP_CONCAT()
в запросе MySQL для преобразования нескольких строк в одну строку. Однако максимальная длина результата этой функции - 1024
символы.
Я очень хорошо знаю, что я могу изменить параметр, group_concat_max_len
чтобы увеличить этот предел:
SET SESSION group_concat_max_len = 1000000;
Однако на сервере, который я использую, я не могу изменить ни одного параметра. Не используя предыдущий запрос и не редактируя любой файл конфигурации.
Итак, мой вопрос: есть ли другой способ получить выходные данные многострочного запроса в одну строку?
mysql
group-concat
ZeWaren
источник
источник
SET
выражение для изменения переменной сеанса?Ответы:
это временная область действия Это относится только к текущей сессии. Вы должны использовать это так.
Вы можете сделать это даже при совместном использовании хостинга, но когда вы используете другой сеанс, вам нужно повторить
SET SESSION
команду.источник
SET GLOBAL group_concat_max_len=6999
чтобы сделать настройку действительной для запросовПравильный параметр для установки максимальной длины:
value_numeric
должно быть> 1024; по умолчаниюgroup_concat_max_len
значение равно 1024.источник
group_concat_max_len
всего 4 . ( MySQL документы ). «value_numeric
должен быть> = 4» это случай здесь. Я фактически использовал это, чтобы проверить, что происходит, когда вы превышаетеgroup_concat_max_len
значение.SET
запрос не повлияет на настройки после перезапуска.Включите этот параметр в конфигурационный файл xampp my.ini:
Затем перезапустите xampp mysql
источник
Вы можете попробовать это
источник
Правильный синтаксис: mysql>
SET @@global.group_concat_max_len = integer;
Если у вас нет прав для этого на сервере, на котором находится ваша база данных, используйте запрос типа:
mySQL =
"SET @@session.group_concat_max_len = 10000;"
или другое значение.Следующая строка:
SET objRS = objConn.Execute(mySQL)
ваши переменные могут отличаться.затем и
mySQL="SELECT GROUP_CONCAT(......);"
т. д.Я использую последнюю версию, поскольку у меня нет привилегий для изменения значения по умолчанию 1024 глобально (с помощью cPanel).
Надеюсь это поможет.
источник
Этот запрос немного странный, но ему не нужен другой запрос для инициализации переменной; и это может быть встроено в более сложный запрос. Возвращает все поля 'field2, разделенные точкой с запятой.
источник