PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Еквивалент на PostgreSQL GROUP_CONCAT().

Някои RDBMS като MySQL и MariaDB имат GROUP_CONCAT() функция, която ви позволява да върнете колона на заявка като разделен списък (например списък, разделен със запетая).

PostgreSQL има подобна функция, наречена STRING_AGG() . Тази функция работи почти по същия начин като GROUP_CONCAT() работи в MySQL и MariaDB.

Пример

Ето основен пример, за да демонстрирате как STRING_AGG() на PostgreSQL функция работи:

SELECT STRING_AGG(genre, ',') FROM Genres;

Резултат:

Rock,Jazz,Country,Pop,Blues,Hip Hop,Rap,Punk

Ето какво се случва, когато просто направим заявката без STRING_AGG() функция:

SELECT genre FROM Genres;

Резултат:

+---------+
|  genre  |
+---------+
| Rock    |
| Jazz    |
| Country |
| Pop     |
| Blues   |
| Hip Hop |
| Rap     |
| Punk    |
+---------+
(8 rows)

Получаваме осем реда, всеки с отделна стойност, вместо един дълъг ред, разделен със запетая, от всички стойности.

Ако не друго, STRING_AGG() на PostgreSQL е по-скоро като GROUP_CONCAT() на MySQL отколкото едноименната функция на MariaDB. Казвам това, защото GROUP_CONCAT() на MariaDB ни позволява да предоставим LIMIT клауза (от MariaDB 10.3.3), направо от самата функция. MySQL GROUP_CONCAT() не поддържа LIMIT клауза, както и STRING_AGG() на PostgreSQL функция (поне не към момента на писане).

Друга разлика е, че STRING_AGG() на PostgreSQL изисква втори аргумент (който определя разделителя за използване). И MySQL, и MariaDB правят това по избор със своя GROUP_CONCAT() функции.

STRING_AGG() на Postgres приема ORDER BY клауза и DISTINCT клауза (както и GROUP_CONCAT() на MariaDB и MySQL функции).

Вижте STRING_AGG() Функция в PostgreSQL за повече примери.

И в случай, че се интересувате, SQL Server също има STRING_AGG() функция, която работи почти по същия начин.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете Postgres таблица с уникален комбиниран първичен ключ?

  2. Как да нулирате последователността за идентификатори на PostgreSQL таблици

  3. Бавно хибернация за придобиване на Postgres връзка

  4. ГРЕШКА в PostgreSQL:функция to_tsvector(променлив знак, неизвестен) не съществува

  5. org.postgresql.util.PSQLException:Големите обекти не може да се използват в режим на автоматично записване