Maison > base de données > tutoriel mysql > Comment concaténer des champs de plusieurs enregistrements T-SQL dans une chaîne séparée par des virgules ?

Comment concaténer des champs de plusieurs enregistrements T-SQL dans une chaîne séparée par des virgules ?

Barbara Streisand
Libérer: 2025-01-15 08:21:43
original
638 Les gens l'ont consulté

How to Concatenate Fields from Multiple T-SQL Records into a Comma-Separated String?

Regrouper les champs de plusieurs enregistrements par un autre champ en T-SQL

Cet article explorera une technique de regroupement des valeurs de champs associées à plusieurs enregistrements dans deux tables. En combinant les données des tables Reviews, Reviewers et Users, nous pouvons concaténer les champs FName en une chaîne séparée par des virgules.

<code class="language-sql">-- 示例数据
DECLARE @Reviews TABLE(
        ReviewID INT,
        ReviewDate DATETIME
)

DECLARE @Reviewers TABLE(
        ReviewerID   INT,
        ReviewID   INT,
        UserID INT
)

DECLARE @Users TABLE(
        UserID  INT,
        FName  VARCHAR(50),
        LName VARCHAR(50)
)

INSERT INTO @Reviews SELECT 1, '12 Jan 2009'
INSERT INTO @Reviews SELECT 2, '25 Jan 2009'

INSERT INTO @Users SELECT 1, 'Bob', ''
INSERT INTO @Users SELECT 2, 'Joe', ''
INSERT INTO @Users SELECT 3, 'Frank', ''
INSERT INTO @Users SELECT 4, 'Sue', ''
INSERT INTO @Users SELECT 5, 'Alice', ''

INSERT INTO @Reviewers SELECT 1, 1, 1
INSERT INTO @Reviewers SELECT 2, 1, 2
INSERT INTO @Reviewers SELECT 3, 1, 3
INSERT INTO @Reviewers SELECT 4, 2, 4
INSERT INTO @Reviewers SELECT 5, 2, 5</code>
Copier après la connexion

Solution utilisant SELECT et FOR XML PATH()

En utilisant l'opérateur FOR XML PATH(), nous pouvons concaténer les valeurs FName en une seule chaîne :

<code class="language-sql">SELECT  *,
        ( 
            SELECT  u.FName + ','
            FROM    @Users u INNER JOIN 
                    @Reviewers rs ON u.UserID = rs.UserID
            WHERE   rs.ReviewID = r.ReviewID
            FOR XML PATH('')
        ) AS UserNames
FROM    @Reviews r</code>
Copier après la connexion

Cette requête renvoie les résultats suivants :

<code>ReviewID  ReviewDate  UserNames
1          12 Jan 2009  Bob,Joe,Frank
2          25 Jan 2009  Sue,Alice</code>
Copier après la connexion

Conclusion

À l'aide de la fonction FOR XML PATH(), nous avons réussi à regrouper les valeurs de champ de plusieurs enregistrements dans différentes tables par un champ commun. Cette technique peut être appliquée aux scénarios dans lesquels des représentations sous forme de chaînes concaténées sont requises.

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