Maison >base de données >tutoriel mysql >Comment concaténer des colonnes basées sur GROUP BY en SQL ?

Comment concaténer des colonnes basées sur GROUP BY en SQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-14 08:14:43721parcourir

How to Concatenate Columns Based on GROUP BY in SQL?

Connexion de colonne sous instruction GROUP BY en SQL

En SQL, une manière courante de combiner ou de joindre des colonnes en fonction d'une instruction GROUP BY consiste à utiliser des fonctions d'agrégation en conjonction avec des opérateurs de chaîne. Voyons comment y parvenir.

Considérez l'exemple de tableau suivant :

ID 用户 活动 页面URL
1 act1 ab
2 act1 cd
3 act2 xy
4 act2 st

Pour concaténer les valeurs PageURL de chaque utilisateur et groupe d'activités séparées par des virgules, nous pouvons utiliser la requête suivante :

SELECT [utilisateur], activité, STUFF((SELECT ',' page URL FROM table name WHERE [user] = a. [user] AND activité = a. activité FOR XML PATH ('')) , 1, 1, '') AS liste d'URL FROM nom de la table AS GROUP BY [utilisateur], activité

Répartition des requêtes :

  • SÉLECTIONNER [Utilisateur], Activité, Liste d'URL : Sélectionnez les colonnes Utilisateur, Activité et Liste d'URL à afficher.
  • STUFF : Concatène les valeurs PageURL en une seule chaîne.
  • (SELECT ',' Page URL ...) : Sous-requête pour extraire la valeur PageURL de chaque groupe et les concaténer avec une virgule comme séparateur.
  • FOR XML PATH (''): Convertit le résultat de la sous-requête en une chaîne XML.
  • STUFF(... , 1, 1, ''): Supprime la virgule au début de la chaîne XML, ne laissant que la valeur concaténée.
  • GROUPE PAR [UTILISATEUR], ACTIVITÉ : Regroupe les résultats par « Utilisateur » et « Activité » afin que la jointure soit effectuée pour chaque combinaison unique.

Le tableau généré aura la mise en page souhaitée :

用户 活动 URL列表
act1 ab, cd
act2 xy, st

Cette approche exploite la puissance des fonctions d'agrégation et des opérations de chaîne pour concaténer efficacement les valeurs de colonnes basées sur les opérations GROUP BY, ce qui en fait une solution flexible pour une variété de tâches de manipulation de données.

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