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
Libérer: 2025-01-22 08:37:12
original
503 Les gens l'ont consulté

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) :
SELECT company_id, string_agg(employee, ', ')
FROM mytable
GROUP BY company_id;
Copier après la connexion

PostgreSQL 8.4.x :

  • Utilisez la fonction array_agg(expression) pour combiner array_to_string() :
SELECT company_id, array_to_string(array_agg(employee), ', ')
FROM mytable
GROUP BY company_id;
Copier après la connexion

PostgreSQL 8.3.x et versions antérieures :

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

SELECT company_id, textcat_all(employee)
FROM mytable
GROUP BY company_id;
Copier après la connexion
  • 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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal