Heim >Datenbank >MySQL-Tutorial >Wie verkette ich Feldwerte in PostgreSQL für mehrere Datensätze mit einer einzigen ID?

Wie verkette ich Feldwerte in PostgreSQL für mehrere Datensätze mit einer einzigen ID?

Barbara Streisand
Barbara StreisandOriginal
2025-01-21 09:32:16283Durchsuche

How to Concatenate Field Values in PostgreSQL for Multiple Records with a Single ID?

Verketten von Feldwerten in PostgreSQL für mehrere Datensätze und eine einzelne ID

Viele Datenbankanwendungen erfordern die Kombination mehrerer Werte, die sich auf einen einzelnen Bezeichner beziehen, in einer einzigen Verbindungszeichenfolge. Dieser Vorgang ist besonders nützlich, wenn eine Tabelle mit mehreren Datensätzen pro eindeutiger ID abgefragt wird.

GROUP_CONCAT-Funktion in MySQL

In MySQL bietet die Funktion GROUP_CONCAT einen direkten Weg, dieses Ziel zu erreichen. Allerdings ist die Funktion GROUP_CONCAT nicht direkt in PostgreSQL verfügbar.

PostgreSQL-Äquivalent von GROUP_CONCAT

In PostgreSQL ist die string_agg-Funktion das Äquivalent von MySQLs GROUP_CONCAT. Mit dieser Funktion können Sie Zeichenfolgen verketten und dabei ein Trennzeichen (z. B. ein Komma) angeben, um die verketteten Werte zu trennen.

Beispiel: PostgreSQL-Abfrage mit string_agg

Betrachten Sie die Beispieltabelle in der ursprünglichen Frage:

id some_column
TM67 4
TM67 9
TM67 72
TM99 2
TM99 3

Die folgende PostgreSQL-Abfrage kann verwendet werden, um die Werte von some_column-Spalten für jede eindeutige ID zu verketten:

<code class="language-sql">SELECT
   id,
   string_agg(some_column::text, ',') AS values
FROM
   the_table
GROUP BY
   id;</code>

Ergebnis:

id values
TM67 4,9,72
TM99 2,3

Diese Abfrage ruft eine Zeile für jede eindeutige ID ab und verkettet die Werte von some_column-Spalten zu einer einzigen Zeichenfolge mit Kommas als Trennzeichen.

Hinweis: Die string_agg-Funktion wurde in PostgreSQL Version 9.0 eingeführt. Für frühere Versionen von PostgreSQL können Sie alternativ die Erweiterungen „generate_series“ oder „group_concat_agg“ verwenden, um die gleiche Funktionalität zu erreichen. Die Typkonvertierung von some_column::text stellt sicher, dass some_column auch dann korrekt verkettet wird, wenn es sich nicht um einen Texttyp handelt.

Das obige ist der detaillierte Inhalt vonWie verkette ich Feldwerte in PostgreSQL für mehrere Datensätze mit einer einzigen ID?. 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