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 ?
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 :
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!