Heim >Datenbank >MySQL-Tutorial >Wie verkette ich Spalten basierend auf GROUP BY in SQL?

Wie verkette ich Spalten basierend auf GROUP BY in SQL?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-14 08:14:43720Durchsuche

How to Concatenate Columns Based on GROUP BY in SQL?

Spaltenverbindung unter GROUP BY-Anweisung in SQL

In SQL besteht eine übliche Methode zum Kombinieren oder Verbinden von Spalten basierend auf einer GROUP BY-Anweisung darin, Aggregatfunktionen in Verbindung mit Zeichenfolgenoperatoren zu verwenden. Lassen Sie uns untersuchen, wie wir dies erreichen können.

Betrachten Sie die folgende Beispieltabelle:

ID 用户 活动 页面URL
1 act1 ab
2 act1 cd
3 act2 xy
4 act2 st

Um die PageURL-Werte für jeden Benutzer und jede Aktivitätsgruppe durch Kommas getrennt zu verketten, können wir die folgende Abfrage verwenden:

SELECT [Benutzer], Aktivität, STUFF((SELECT ',' Seiten-URL FROM Tabellenname WHERE [Benutzer] = a. [Benutzer] UND Aktivität = a. Aktivität FOR XML PATH ('')) , 1, 1, '') AS URL-Liste FROM Tabellenname AS a GROUP BY [Benutzer], Aktivität

Abfrageaufschlüsselung:

  • SELECT [Benutzer], Aktivität, URL-Liste: Wählen Sie die anzuzeigenden Spalten „Benutzer“, „Aktivität“ und „URL-Liste“ aus.
  • STUFF: Verkettet PageURL-Werte zu einer einzelnen Zeichenfolge.
  • (SELECT ',' Seiten-URL ...): Unterabfrage, um den PageURL-Wert jeder Gruppe zu extrahieren und sie mit Komma als Trennzeichen zu verketten.
  • FOR XML PATH (''): Konvertiert das Ergebnis der Unterabfrage in eine XML-Zeichenfolge.
  • STUFF(... , 1, 1, ''): Entfernt das Komma am Anfang der XML-Zeichenfolge, sodass nur der verkettete Wert übrig bleibt.
  • GRUPPE NACH [BENUTZER], AKTIVITÄT: Gruppiert die Ergebnisse nach „Benutzer“ und „Aktivität“, sodass die Verknüpfung für jede eindeutige Kombination durchgeführt wird.

Die generierte Tabelle hat das gewünschte Layout:

用户 活动 URL列表
act1 ab, cd
act2 xy, st

Dieser Ansatz nutzt die Leistungsfähigkeit von Aggregatfunktionen und Zeichenfolgenoperationen, um Spaltenwerte basierend auf GROUP BY-Operationen effektiv zu verketten, was ihn zu einer flexiblen Lösung für eine Vielzahl von Datenmanipulationsaufgaben macht.

Das obige ist der detaillierte Inhalt vonWie verkette ich Spalten basierend auf GROUP BY in SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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