GROUP_CONCAT
Аналог в PostgreSQL:
Объединяет значения из группы строк в одну строку через разделитель.
MySQL 8.4
GROUP_CONCAT([DISTINCT] expr [ORDER BY sort_expression [ASC | DESC]] [SEPARATOR str])- [ ]необязательная часть
- a | bодин из вариантов
- DISTINCT
- Объединять только уникальные значенияКлючевое словоНеобязательный
- expr
- Выражение, значения которого объединяются
- ORDER BY sort_expression [ASC | DESC]
- Порядок значений в строке; без него порядок не гарантированНеобязательный
- sort_expression
- Столбец или выражение для сортировки
- ASC | DESC
- Направление, по умолчанию ASCКлючевое словоНеобязательныйASCDESC
- SEPARATOR str
- Разделитель, по умолчанию запятая без пробелаНеобязательный
- str
- Строка-разделитель; '' — без разделителяVARCHAR
Возвращаемое значение
Строка; NULL пропускаются, NULL, если все значения равны NULL
Примеры
Все имена в одной строке
MySQL 8.4
SELECT GROUP_CONCAT(member_name)
FROM FamilyMembers;Уникальные статусы через запятую
MySQL 8.4
SELECT GROUP_CONCAT(
DISTINCT status
ORDER BY status SEPARATOR ', '
) AS statuses
FROM FamilyMembers;Имена по статусам
MySQL 8.4
SELECT status,
GROUP_CONCAT(
member_name
ORDER BY member_name SEPARATOR ', '
) AS members
FROM FamilyMembers
GROUP BY status;Подробности
Без ORDER BY значения идут в том порядке, в каком их прочитал сервер, и он может меняться от запуска к запуску. По умолчанию результат обрезается до 1024 байт (переменная group_concat_max_len) с предупреждением, а не ошибкой.