Heim > Datenbank > MySQL-Tutorial > Wie verkette ich mehrere Beschriftungen basierend auf der ID zu einer einzigen Zeile?

Wie verkette ich mehrere Beschriftungen basierend auf der ID zu einer einzigen Zeile?

Susan Sarandon
Freigeben: 2024-12-30 21:52:10
Original
799 Leute haben es durchsucht

How to Concatenate Multiple Labels into a Single Row Based on ID?

Verketten von Werten basierend auf der ID

Diese Frage zielt darauf ab, eine Tabelle mit mehreren Zeilen pro ID und einer einzelnen „Label“-Spalte in eine umzuwandeln Tabelle mit einer Zeile pro ID und einer verketteten „Label“-Spalte. Jede Bezeichnung sollte durch Kommas getrennt werden.

Die bereitgestellten Daten bestehen aus den folgenden Beobachtungen:

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

Die gewünschte Ausgabe ist:

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

Um diese Transformation zu erreichen , kann das folgende Code-Snippet verwendet werden:

declare @T table(Response_ID int, Label varchar(50))
insert into @T values
(12147,          'It was not clear'),
(12458,          'Did not Undersstand'),
(12458,          'Was not resolved'),
(12458,          'Did not communicate'),
(12586,          'Spoke too fast'),
(12587,          'Too slow')

select T1.Response_ID,
       stuff((select ','+T2.Label
              from @T as T2
              where T1.Response_ID = T2.Response_ID
              for xml path(''), type).value('.', 'varchar(max)'), 1, 1, '') as Label
from @T as T1
group by T1.Response_ID
Nach dem Login kopieren

Die Unterabfrage in der Funktion „stuff“ verwendet die Verkettung über ' '-Operator und XML-Methoden zur Verarbeitung der Kombination von Beschriftungen. Die Funktion „value“ des Parameters „type“ konvertiert die XML-Ausgabe in einen varchar(max)-Typ, um eine ordnungsgemäße Anzeige der verketteten Ergebnisse sicherzustellen.

Bitte beachten Sie, dass ohne eine „order by“-Anweisung in der Unterabfrage die Reihenfolge der verketteten Saiten können nicht garantiert werden.

Das obige ist der detaillierte Inhalt vonWie verkette ich mehrere Beschriftungen basierend auf der ID zu einer einzigen Zeile?. 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