Heim >Datenbank >MySQL-Tutorial >Wie verkette ich Spaltenwerte mit GROUP BY in SQL?

Wie verkette ich Spaltenwerte mit GROUP BY in SQL?

DDD
DDDOriginal
2025-01-14 09:46:43771Durchsuche

How to Concatenate Column Values with GROUP BY in SQL?

Verwenden Sie die GROUP BY-Anweisung von SQL, um Spaltenwerte zu verbinden

Angenommen, Sie haben eine Tabelle mit den folgenden Daten:

<code>ID | 用户 | 活动 | 页面URL
1 | 我 | act1 | ab
2 | 我 | act1 | cd
3 | 你 | act2 | xy
4 | 你 | act2 | st</code>

Sie möchten die Daten nach Benutzer und Aktivität gruppieren und die Werte aus der Spalte Seiten-URL in jeder Gruppe in einem einzigen Komma kombinieren. getrennter String. Die gewünschte Ausgabe lautet wie folgt:

<code>用户 | 活动 | 页面URL
我 | act1 | ab, cd
你 | act2 | xy, st</code>

Um diese Verknüpfung mithilfe einer GROUP BY-Abfrage zu erreichen, können Sie die Funktion STUFF() zusammen mit einer Unterabfrage in der GROUP BY-Klausel verwenden. Im Folgenden finden Sie eine detaillierte Aufschlüsselung:

<code class="language-sql">SELECT
    [用户], 活动,
    STUFF(
        (SELECT DISTINCT ',' + 页面URL
         FROM 表名称
         WHERE [用户] = a.[用户] AND 活动 = a.活动
         FOR XML PATH (''))
         , 1, 1, '')  AS URL列表
FROM 表名称 AS a
GROUP BY [用户], 活动</code>
  • SELECT: Wählen Sie die erforderlichen Spalten aus: Benutzer, Aktivität und verbundene Seiten-URL-Werte als Liste von URLs .
  • STUFF(): Diese Funktion akzeptiert drei Parameter: die zu ändernde Zeichenfolge, die Startposition, die Anzahl der zu löschenden Zeichen und die einzufügende Zeichenfolge. In diesem Fall wird das erste Zeichen (Komma) entfernt und der verkettete Wert Seiten-URL in die geänderte Zeichenfolge eingefügt.
  • Unterabfrage in
  • FOR XML PATH(''): Diese Unterabfrage wählt das eindeutige Benutzer und Aktivität 🎜>Seiten-URLWert. Es verwendet die FOR XML PATH('')-Klausel, um durch Verketten der Werte eine einzelne Zeichenfolge zurückzugeben.
  • a.[Benutzer] UND Aktivität = a.Aktivität:
  • Dieser Abschnitt stellt sicher, dass die Unterabfrage nur Seiten-URL-Werte abruft, die zu der Gruppe gehören, die gerade verarbeitet wird.
  • GROUP BY:
  • Gruppiert die Daten nach Benutzer und Aktivität, um den Wert Seiten-URL für jede Gruppe zu aggregieren.
  • Durch Ausführen dieser Abfrage erhalten Sie die gewünschte Ausgabe, in der die
Seiten-URL

-Werte für jede eindeutige Benutzer- und Aktivität-Kombination zusammengeführt werden und durch Kommas getrennt.

Das obige ist der detaillierte Inhalt vonWie verkette ich Spaltenwerte mit 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