GROUP_CONCAT
Аналог в PostgreSQL:
Объединяет значения из группы строк в одну строку через разделитель.
MySQL 8.1
GROUP_CONCAT([DISTINCT] expr [ORDER BY ...] [SEPARATOR str])Параметры
- DISTINCTключевое словонеобязательный
- Объединять только уникальные значения
- expr
- Выражение, значения которого объединяются
- ORDER BYнеобязательный
- Порядок значений в строке; без него порядок не гарантирован
- SEPARATOR strVARCHARнеобязательный
- Разделитель, по умолчанию запятая без пробела
Возвращаемое значение
Строка; NULL пропускаются, NULL, если все значения равны NULL
Примеры
Все имена в одной строке
MySQL 8.1
SELECT GROUP_CONCAT(member_name)
FROM FamilyMembers;Уникальные статусы через запятую
MySQL 8.1
SELECT GROUP_CONCAT(
DISTINCT status
ORDER BY status SEPARATOR ', '
) AS statuses
FROM FamilyMembers;Имена по статусам
MySQL 8.1
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) с предупреждением, а не ошибкой.