Maison >base de données >tutoriel mysql >Comment regrouper des données et concaténer des valeurs avec des séparateurs par virgules en SQL ?

Comment regrouper des données et concaténer des valeurs avec des séparateurs par virgules en SQL ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-07 19:56:41736parcourir

How to Group Data and Concatenate Values with Comma Separators in SQL?

Regroupement et concaténation SQL avec séparateurs par virgules

Ce guide montre comment écrire une requête SQL qui regroupe les données et concatène les valeurs agrégées à l'aide de séparateurs par virgules. Imaginez une table comme celle-ci :

<code>| ID | Value |
|-----|-------|
| 1   | a     |
| 1   | b     |
| 2   | c     |</code>

L'objectif est de générer un ensemble de résultats dans lequel les valeurs du même identifiant sont combinées en une seule chaîne séparée par des virgules :

<code>| ID | Value |
|-----|-------|
| 1   | a,b   |
| 2   | c     |</code>

Solution utilisant FOR XML PATH :

La construction FOR XML PATH fournit un moyen efficace d'y parvenir :

<code class="language-sql">SELECT
    ID,
    STUFF((SELECT ', ' + Value
           FROM YourTable t2 WHERE t1.ID = t2.ID
           FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '') AS Values
FROM YourTable t1
GROUP BY ID;</code>

La fonction STUFF supprime la virgule et l'espace de début ajoutés par l'instruction SELECT. Cette approche est généralement privilégiée pour ses performances et sa lisibilité.

Lectures complémentaires :

Pour des scénarios plus avancés et des techniques alternatives, explorez ces ressources :

  • Stack Overflow : Un fil de discussion Stack Overflow pertinent discutant de défis de concaténation similaires (recherchez « Groupe SQL par concaténation »).
  • Documentation SQL Server : Consultez la documentation officielle de Microsoft pour des informations détaillées sur FOR XML PATH et les fonctions associées.

Cette réponse révisée améliore la clarté, fournit une explication plus concise et propose des liens utiles pour un apprentissage ultérieur. L'image reste dans sa position d'origine.

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