MySQL group_concat_max_len в запросе
Я ищу способ вставить этот
SET GLOBAL group_concat_max_len=15000
в существующем SQL-запросе, например:
SELECT *
FROM `Pages`
WHERE id =1
UNION SELECT 1 , 2, IF( 1 >0, SET GLOBAL group_concat_max_len=15000,'B' )
Но я не мог заставить его работать, потому что обычно этот запрос выполняется сам по себе, и мне было интересно, есть ли у некоторых из вас какие-либо идеи, как заставить его работать
Ответы
Ответ 1
Вы не можете использовать оператор SET
внутри выражения, которое вы делаете, или даже в подзапросе. Выполните SET
в одном из утверждений. Установленное вами значение повлияет на последующие утверждения.
Кстати, знаете ли вы, что SET GLOBAL
означает, что этот параметр повлияет на все другие подключения MySQL на вашем сервере, и этот параметр будет сохраняться даже после завершения текущего сеанса, пока вы не установите его на что-то еще? Вы можете использовать SET SESSION
, если хотите, чтобы значение повлияло на текущий сеанс.
Ответ 2
Максимально допустимая длина результата в байтах для функции GROUP_CONCAT(). Значение по умолчанию - 1024.
mysql > показать переменные типа 'group%';
Вы изменяете значение group_concat_max_len. Либо в вашем файле конфигурации, либо в настройке переменной сеанса, например. "SET @@group_concat_max_len = 2048; '
Ответ 3
CI3 Пример: вы не можете их комбинировать, но вы можете выполнить отдельный запрос, например:
public function myModelFunction($id){
//set mysql session variable
$this->db->query("SET @@group_concat_max_len = 2048;");
//actual query
$query= $this->db->query("").....
Ответ 4
Вы можете выполнять их один за другим, и я думаю, что он будет иметь желаемый эффект или отделить его; знак.
Ответ 5
Для нового пользователя при поиске решения при увеличении group_concat_max_len я обнаружил, что в некоторых случаях переменная не была определена в файле my.cnf. Нечего беспокоиться о том, чтобы просто добавить эту переменную group_concat_max_len = XXXXX под заголовком [mysqld] в файле my.cnf и перезапустить mysql... вы СОВЕРШЕНА!!!
XXXXX = желаемое значение, например: 2048,4096 и т.д.