Maison >base de données >tutoriel mysql >Comment concaténer des chaînes dans une requête PostgreSQL GROUP BY ?

Comment concaténer des chaînes dans une requête PostgreSQL GROUP BY ?

DDD
DDDoriginal
2025-01-22 08:37:12507parcourir

How to Concatenate Strings Within a PostgreSQL GROUP BY Query?

Comment concaténer des chaînes dans la requête GROUP BY de PostgreSQL ?

Question :

Dans PostgreSQL, comment concaténer des chaînes de champs dans une requête GROUP BY ?

Exemple :

Considérons un tableau avec le schéma suivant :

ID COMPANY_ID EMPLOYEE
1 1 Anna
2 1 Bill
3 2 Carol
4 2 Dave

Le but est de regrouper par COMPANY_ID et de concaténer les EMPLOYEE valeurs, ce qui donne ce qui suit :

COMPANY_ID EMPLOYEE
1 Anna, Bill
2 Carol, Dave

Solution :

PostgreSQL 9.0 ou supérieur :

  • Utilisez la fonction string_agg(expression, delimiter) :
<code class="language-sql">SELECT company_id, string_agg(employee, ', ')
FROM mytable
GROUP BY company_id;</code>

PostgreSQL 8.4.x :

  • Utilisez la fonction array_agg(expression) pour combiner array_to_string() :
<code class="language-sql">SELECT company_id, array_to_string(array_agg(employee), ', ')
FROM mytable
GROUP BY company_id;</code>

PostgreSQL 8.3.x et versions antérieures :

  • Créez une fonction d'agrégation personnalisée pour concaténer des chaînes :
<code class="language-sql">CREATE AGGREGATE textcat_all(
    basetype = text,
    sfunc = textcat,
    stype = text,
    initcond = ''
);

SELECT company_id, textcat_all(employee)
FROM mytable
GROUP BY company_id;</code>
  • En option, vous pouvez créer une fonction pour personnaliser le comportement de jointure, comme l'ajout de séparateurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn