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
DDDOriginal
2025-01-22 08:37:12529Durchsuche

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>

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>

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>
  • 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!

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