Heim > Datenbank > MySQL-Tutorial > Wie verkette ich Zeichenfolgen innerhalb einer PostgreSQL-GROUP-BY-Abfrage?

Wie verkette ich Zeichenfolgen innerhalb einer PostgreSQL-GROUP-BY-Abfrage?

DDD
Freigeben: 2025-01-22 08:37:12
Original
448 Leute haben es durchsucht

How to Concatenate Strings Within a PostgreSQL GROUP BY Query?

Wie verkettet man Zeichenfolgen in der GROUP BY-Abfrage von PostgreSQL?

Frage:

Wie verkettet man in PostgreSQL Zeichenfolgen von Feldern in einer GROUP BY-Abfrage?

Beispiel:

Betrachten Sie eine Tabelle mit dem folgenden Schema:

ID COMPANY_ID EMPLOYEE
1 1 Anna
2 1 Bill
3 2 Carol
4 2 Dave

Das Ziel besteht darin, nach COMPANY_ID zu gruppieren und die EMPLOYEE-Werte zu verketten, was zu Folgendem führt:

COMPANY_ID EMPLOYEE
1 Anna, Bill
2 Carol, Dave

Lösung:

PostgreSQL 9.0 oder höher:

  • Verwenden Sie die Funktion string_agg(expression, delimiter):
<code class="language-sql">SELECT company_id, string_agg(employee, ', ')
FROM mytable
GROUP BY company_id;</code>
Nach dem Login kopieren

PostgreSQL 8.4.x:

  • Verwenden Sie die Funktion array_agg(expression), um array_to_string() zu kombinieren:
<code class="language-sql">SELECT company_id, array_to_string(array_agg(employee), ', ')
FROM mytable
GROUP BY company_id;</code>
Nach dem Login kopieren

PostgreSQL 8.3.x und früher:

  • Erstellen Sie eine benutzerdefinierte Aggregatfunktion zum Verketten von Zeichenfolgen:
<code class="language-sql">CREATE AGGREGATE textcat_all(
    basetype = text,
    sfunc = textcat,
    stype = text,
    initcond = ''
);

SELECT company_id, textcat_all(employee)
FROM mytable
GROUP BY company_id;</code>
Nach dem Login kopieren
  • Optional können Sie eine Funktion erstellen, um das Join-Verhalten anzupassen, z. B. das Hinzufügen von Trennzeichen.

Das obige ist der detaillierte Inhalt vonWie verkette ich Zeichenfolgen innerhalb einer PostgreSQL-GROUP-BY-Abfrage?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage