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