Heim >Datenbank >MySQL-Tutorial >Wie verketten „STUFF' und „FOR XML PATH' Namen in SQL Server für doppelte IDs?
Diese Anleitung zeigt, wie Sie mehrere Namen, die mit doppelten IDs in einer SQL Server-Tabelle verknüpft sind, verketten, was zu einer durch Kommas getrennten Liste von Namen für jede eindeutige ID führt. Dies erreichen wir durch die kraftvolle Kombination von STUFF
und FOR XML PATH
.
Szenario:
Stellen Sie sich eine Tabelle mit doppelten IDs und entsprechenden Namen vor. Das Ziel besteht darin, eine neue Spalte zu erstellen, die alle Namen für jede ID enthält, sauber durch Kommas getrennt.
Lösung:
Die Lösung verwendet einen dreistufigen Prozess:
Schritt 1: Generieren der durch Kommas getrennten XML-Zeichenfolge
Der Kern der Lösung besteht darin, FOR XML PATH('')
zu nutzen, um aus den Namen eine durch Kommas getrennte Zeichenfolge zu generieren.
<code class="language-sql">SELECT ',' + name FROM temp1 FOR XML PATH('')</code>
Dadurch wird eine XML-Zeichenfolge generiert, in der jedem Namen ein Komma vorangestellt ist.
Schritt 2: Entfernen des führenden Kommas
Die resultierende XML-Zeichenfolge aus Schritt 1 beginnt mit einem unnötigen Komma. STUFF
entfernt dies elegant.
<code class="language-sql">STUFF( (SELECT ',' + name FROM temp1 FOR XML PATH('')), 1, 1, '' )</code>
STUFF
ersetzt das erste Zeichen (das führende Komma) durch eine leere Zeichenfolge.
Schritt 3: Zusammenfügen, Gruppieren und Endergebnis
Abschließend kombinieren wir die oben genannten Schritte mit einer JOIN
- und GROUP BY
-Klausel, um das gewünschte Ergebnis zu erzielen.
<code class="language-sql">SELECT ID, ConcatenatedNames = STUFF( (SELECT ',' + name FROM temp1 t1 WHERE t1.id = t2.id FOR XML PATH ('')) , 1, 1, '') FROM temp1 t2 GROUP BY id;</code>
Diese Abfrage verknüpft die Unterabfrage (die die durch Kommas getrennte Zeichenfolge generiert) mit der Originaltabelle (temp1
) basierend auf ID
. Die GROUP BY
-Klausel stellt sicher, dass die Verkettung für jede eindeutige ID erfolgt. Die resultierende Spalte ConcatenatedNames
enthält die durch Kommas getrennte Liste der Namen für jede ID.
Das obige ist der detaillierte Inhalt vonWie verketten „STUFF' und „FOR XML PATH' Namen in SQL Server für doppelte IDs?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!