Maison > base de données > tutoriel mysql > Comment concaténer plusieurs valeurs SQL basées sur un identifiant commun ?

Comment concaténer plusieurs valeurs SQL basées sur un identifiant commun ?

DDD
Libérer: 2024-12-30 22:21:10
original
160 Les gens l'ont consulté

How to Concatenate Multiple SQL Values Based on a Common Identifier?

Concaténer plusieurs valeurs basées sur un identifiant commun à l'aide de SQL

Supposons que vous ayez une table avec deux colonnes : Response_ID et Label, où plusieurs Label des valeurs peuvent être associées à chaque Response_ID. Vous devrez peut-être concaténer toutes les valeurs Label pour chaque Response_ID unique.

Cela peut être réalisé à l'aide de l'instruction SQL suivante :

-- Sample data
declare @T table(Response_ID int, Label varchar(50))
insert into @T values
(12147,          'It was not clear'),
(12458,          'Did not Undersstand'),
(12458,          'Was not resolved'),
(12458,          'Did not communicate'),
(12586,          'Spoke too fast'),
(12587,          'Too slow')

-- Query to concatenate Label values
select T1.Response_ID,
       stuff((select ','+T2.Label
              from @T as T2
              where T1.Response_ID = T2.Response_ID
              for xml path(''), type).value('.', 'varchar(max)'), 1, 1, '') as Label
from @T as T1
group by T1.Response_ID
Copier après la connexion

Explication :

  • La sous-requête (select ',' T2.Label ...) concatène les valeurs Label pour chaque Response_ID en une seule chaîne, séparées par des virgules. La clause for xml path(''), type convertit la chaîne concaténée en un fragment XML.
  • La partie .value('.', 'varchar(max)') gère les cas où l'étiquette contient des caractères qui pourrait provoquer des erreurs d'analyse XML, telles que &.
  • La fonction stuff(...) supprime la virgule de début du nom concaténé. string.
  • Enfin, la clause group by agrège les valeurs Label concaténées pour chaque Response_ID unique.

Le résultat sera un tableau avec une ligne par Response_ID et les valeurs Label concaténées séparés par des virgules.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal