Heim > Datenbank > MySQL-Tutorial > Wie verkette ich Felder aus mehreren T-SQL-Datensätzen in einer durch Kommas getrennten Zeichenfolge?

Wie verkette ich Felder aus mehreren T-SQL-Datensätzen in einer durch Kommas getrennten Zeichenfolge?

Barbara Streisand
Freigeben: 2025-01-15 08:21:43
Original
638 Leute haben es durchsucht

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

Felder mehrerer Datensätze nach einem anderen Feld in T-SQL gruppieren

In diesem Artikel wird eine Technik zum Gruppieren von Feldwerten untersucht, die mehreren Datensätzen in zwei Tabellen zugeordnet sind. Durch die Kombination von Daten aus den Tabellen „Bewertungen“, „Rezensenten“ und „Benutzer“ können wir die FName-Felder zu einer durch Kommas getrennten Zeichenfolge verketten.

<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>
Nach dem Login kopieren

Lösung mit verschachteltem SELECT und FOR XML PATH()

Mit dem FOR XML PATH()-Operator können wir die FName-Werte in einer einzigen Zeichenfolge verketten:

<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>
Nach dem Login kopieren

Diese Abfrage gibt die folgenden Ergebnisse zurück:

<code>ReviewID  ReviewDate  UserNames
1          12 Jan 2009  Bob,Joe,Frank
2          25 Jan 2009  Sue,Alice</code>
Nach dem Login kopieren

Fazit

Mit der Funktion FOR XML PATH() haben wir die Feldwerte mehrerer Datensätze in verschiedenen Tabellen erfolgreich nach einem gemeinsamen Feld gruppiert. Diese Technik kann auf Szenarien angewendet werden, in denen verkettete Zeichenfolgendarstellungen erforderlich sind.

Das obige ist der detaillierte Inhalt vonWie verkette ich Felder aus mehreren T-SQL-Datensätzen in einer durch Kommas getrennten Zeichenfolge?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage