Справочник по функциям

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;
GROUP_CONCAT(member_name)
Headley Quincey,Flavia Quincey,Andie Quincey,Lela Quincey,Annie Quincey,Ernest Forrest,Constance Forrest,Wednesday Addams

Уникальные статусы через запятую

MySQL 8.1
SELECT GROUP_CONCAT(
		DISTINCT status
		ORDER BY status SEPARATOR ', '
	) AS statuses
FROM FamilyMembers;
statuses
daughter, father, mother, son

Имена по статусам

MySQL 8.1
SELECT status,
	GROUP_CONCAT(
		member_name
		ORDER BY member_name SEPARATOR ', '
	) AS members
FROM FamilyMembers
GROUP BY status;
statusmembers
daughterAnnie Quincey, Lela Quincey, Wednesday Addams
fatherErnest Forrest, Headley Quincey
motherConstance Forrest, Flavia Quincey
sonAndie Quincey

Подробности

Без ORDER BY значения идут в том порядке, в каком их прочитал сервер, и он может меняться от запуска к запуску. По умолчанию результат обрезается до 1024 байт (переменная group_concat_max_len) с предупреждением, а не ошибкой.

Смотрите также