Maison > base de données > tutoriel mysql > Comment concaténer plusieurs lignes en une seule chaîne en SQL ?

Comment concaténer plusieurs lignes en une seule chaîne en SQL ?

Patricia Arquette
Libérer: 2025-01-01 12:19:10
original
335 Les gens l'ont consulté

How to Concatenate Multiple Rows into a Single String in SQL?

Concaténation de valeurs basées sur l'ID

Dans la manipulation de données, il est souvent nécessaire de combiner les données de plusieurs lignes en une seule chaîne. Ceci peut être réalisé par concaténation, où une chaîne est assemblée à partir de fragments plus petits.

Énoncé du problème :

Vous avez un tableau appelé « Résultats » avec deux colonnes : » Response_ID" et "Étiquette". Chaque « Response_ID » correspond à plusieurs valeurs « Label ». Votre objectif est de générer un nouveau tableau avec une ligne par "Response_ID" et toutes les valeurs "Label" concaténées en une seule chaîne, séparées par des virgules.

Solution :

Pour concaténer des valeurs basées sur "Response_ID", vous pouvez utiliser le code SQL suivant requête :

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

Explication :

  • T1.Response_ID : La colonne "Response_ID" de la table d'origine.
  • Stuff() : Ceci la fonction concatène les chaînes. Il prend les arguments suivants :

    • La chaîne résultante à concaténer (entre parenthèses).
    • La position de départ dans la chaîne résultante où la concaténation doit commencer (1 dans ce cas).
    • La longueur de la sous-chaîne à supprimer du début de la chaîne résultante (1 dans ce cas).
    • La chaîne à supprimer concaténé.
  • Chemin XML : Cette sous-requête génère un fragment XML pour le processus de concaténation. Chaque valeur « Label » est enveloppée dans un élément XML séparé par des virgules.
  • value() : Cette fonction extrait la chaîne concaténée du fragment XML.

Exemple :

Considérez ce qui suit table :

Response_ID Label
12147 It was not clear
12458 Did not Understand
12458 Was not resolved
12458 Did not communicate
12586 Spoke too fast
12587 Too slow

La requête ci-dessus produirait le résultat suivant :

Response_ID Label
12147 It was not clear
12458 Did not Understand,Was not resolved,Did not communicate
12586 Spoke too fast
12587 Too slow

Remarque : L'ordre des chaînes concaténées n'est pas toujours prévisible. Pour un contrôle précis de la commande, vous pouvez utiliser une instruction « ORDER BY » dans la sous-requête.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal