Maison >base de données >tutoriel mysql >Comment concaténer des valeurs de champ dans PostgreSQL pour plusieurs enregistrements avec un seul ID ?

Comment concaténer des valeurs de champ dans PostgreSQL pour plusieurs enregistrements avec un seul ID ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-21 09:32:16339parcourir

How to Concatenate Field Values in PostgreSQL for Multiple Records with a Single ID?

Concaténation des valeurs de champ dans PostgreSQL pour plusieurs enregistrements et un seul ID

De nombreuses applications de bases de données nécessitent de combiner plusieurs valeurs liées à un seul identifiant en une seule chaîne de connexion. Cette opération est particulièrement utile lors de l'interrogation d'une table comportant plusieurs enregistrements par ID unique.

Fonction GROUP_CONCAT dans MySQL

Dans MySQL, la fonction GROUP_CONCAT fournit un moyen direct d'atteindre cet objectif. Cependant, la fonction GROUP_CONCAT n'est pas disponible directement dans PostgreSQL.

Équivalent PostgreSQL de GROUP_CONCAT

Dans PostgreSQL, la fonction string_agg est l'équivalent du GROUP_CONCAT de MySQL. Cette fonction vous permet de concaténer des chaînes tout en spécifiant un délimiteur (comme une virgule) pour séparer les valeurs concaténées.

Exemple : requête PostgreSQL utilisant string_agg

Considérez l'exemple de tableau fourni dans la question d'origine :

id some_column
TM67 4
TM67 9
TM67 72
TM99 2
TM99 3

La requête PostgreSQL suivante peut être utilisée pour concaténer les valeurs des colonnes some_column pour chaque identifiant unique :

<code class="language-sql">SELECT
   id,
   string_agg(some_column::text, ',') AS values
FROM
   the_table
GROUP BY
   id;</code>

Résultat :

id values
TM67 4,9,72
TM99 2,3

Cette requête récupère une ligne pour chaque identifiant unique et concatène les valeurs des colonnes some_column en une seule chaîne avec des virgules comme délimiteurs.

Remarque : La fonction string_agg a été introduite dans PostgreSQL version 9.0. Pour les versions antérieures de PostgreSQL, vous pouvez utiliser les extensions generate_series ou group_concat_agg comme alternatives pour obtenir la même fonctionnalité. La conversion de type de some_column::text garantit que même si some_column n'est pas un type de texte, il sera correctement concaténé.

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