Heim >Datenbank >MySQL-Tutorial >Wie verkette ich mehrere Zeilen in einer einzigen Zeichenfolge in SQL?
Verketten von Werten basierend auf der ID
Bei der Datenmanipulation ist es oft notwendig, Daten aus mehreren Zeilen in einer einzigen Zeichenfolge zu kombinieren. Dies kann durch Verkettung erreicht werden, bei der eine Zeichenfolge aus kleineren Fragmenten zusammengesetzt wird.
Problemstellung:
Sie haben eine Tabelle namens „Ergebnisse“ mit zwei Spalten: „ Response_ID“ und „Label“. Jede „Response_ID“ entspricht mehreren „Label“-Werten. Ihr Ziel ist es, eine neue Tabelle mit einer Zeile pro „Response_ID“ und allen „Label“-Werten zu generieren, die in einer einzigen Zeichenfolge verkettet und durch Kommas getrennt sind.
Lösung:
Um Werte basierend auf „Response_ID“ zu verketten, können Sie das folgende SQL verwenden Abfrage:
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
Erläuterung:
Stuff(): Diese Funktion verkettet Zeichenfolgen. Es werden die folgenden Argumente benötigt:
Beispiel:
Bedenken Sie Folgendes Tabelle:
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 |
Die obige Abfrage würde die folgende Ausgabe erzeugen:
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 |
Hinweis: Die Reihenfolge der verketteten Zeichenfolgen ist möglicherweise nicht immer vorhersehbar. Zur genauen Steuerung der Reihenfolge können Sie in der Unterabfrage eine „ORDER BY“-Anweisung verwenden.
Das obige ist der detaillierte Inhalt vonWie verkette ich mehrere Zeilen in einer einzigen Zeichenfolge in SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!