Maison >base de données >tutoriel mysql >Comment concaténer des valeurs de champ dans PostgreSQL pour plusieurs enregistrements avec un seul 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!