Однако PostgreSQL изначально не поддерживает функцию group_concat(), в отличие от MySQL. Поэтому в этом учебнике рассматривается, как мы можем добиться аналогичной функциональности, используя функцию string_agg().
Функция PostgreSQL String_Agg
Функция string_agg в PostgreSQL позволяет нам объединять значения из нескольких строк в одну строку и разделять ее указанным параметром.
Использование синтаксиса функции показано ниже:
SELECT string_agg(имя_столбца, разделитель)
ОТ имя_таблицы
ГДЕ условия
СГРУППИРОВАТЬ ПО grouping_columns;
Следующий синтаксис выражается следующим образом:
имя_столбца – Он указывает имя столбца, столбец которого мы хотим объединить.
разделитель – Он определяет символ-разделитель, который используется при объединении входных значений.
имя_таблицы – Целевая таблица, содержащая данные.
группировка_столбцов – Он указывает столбцы, которые используются для группировки указанных данных.
Пример функции PostgreSQL String_Agg
Давайте возьмем более практический пример, чтобы проиллюстрировать, как работает функция. Предположим, у нас есть таблица, содержащая информацию о студентах. Таблица содержит три столбца: идентификатор, имя и тема.
Если мы хотим объединить имена студентов, изучавших один и тот же предмет, мы можем использовать функцию string_agg.
ВЫБЕРИТЕ тему, string_agg ( имя, ',' ) студенты АСОТ студентов
СГРУППИРОВАТЬ ПО ТЕМЕ;
Как только мы запустим данный запрос, он должен вернуть набор результатов с двумя основными столбцами: предмет и ученики. Студенты содержат составные имена студентов по каждому предмету и разделяются запятой.
ПРИМЕЧАНИЕ : функция string_agg по умолчанию сортирует конкатенированные значения. Вы можете добавить предложение ORDER BY внутрь функции string_agg, чтобы сохранить первоначальный порядок.
Вот оно! Простой и эффективный метод достижения аналогичной функциональности, предоставляемой функцией group_concat() в PostgreSQL.
Заключение
В этом кратком, но эффективном руководстве мы узнали, как использовать функцию string_agg в PostgreSQL для достижения аналогичной функциональности, предоставляемой функцией group_concat() в MySQL.