Опубликовано Оставить комментарий

MySQL функция group_concat

MySQL функция GROUP_CONCAT
MySQL функция GROUP_CONCAT

MySQL функция group_concat относится к агрегирующим функциям, т.е. функциям, которые выполняются над набором данных. Синтаксис её прост:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val]
, где ORDER BY — сортировка склеиваемых значений, а SEPARATOR — символ разделитель объединяемых строк (по умолчанию используется запятая).

MySQL функция group_concat

Функция склеивает значения, которые при обычно выборке размещаются в результирующем столбце выборки.

Пример из документации, демонстрирующий выборку имён студентов, с результатами сессии (оценками), склеенными без повторений в порядке возрастания с разделителем — пробельным символом.

mysql> SELECT student_name,
    ->     GROUP_CONCAT(DISTINCT test_score
    ->               ORDER BY test_score DESC SEPARATOR ' ')
    ->     FROM student
    ->     GROUP BY student_name;

GROUP_CONCAT() не умеет склеивать строки, размер которых превышает величину, указываемую в настройках:

SET [GLOBAL | SESSION] group_concat_max_len = val;

Её можно проверить командой:

SHOW VARIABLES LIKE '%group_concat%';

Примеры запросов из видео о функции GROUP_CONCAT():

SELECT GROUP_CONCAT(user SEPARATOR '|')
FROM mysql.user;

SELECT user
FROM mysql.user;

SELECT GROUP_CONCAT(user
ORDER BY user SEPARATOR '|')
FROM mysql.user;
Добавить комментарий