Heim >Datenbank >MySQL-Tutorial >Wie kann ich in PostgreSQL mehrere Spalten aus derselben Zeile als JSON-Array von Objekten zurückgeben?

Wie kann ich in PostgreSQL mehrere Spalten aus derselben Zeile als JSON-Array von Objekten zurückgeben?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-14 22:01:49543Durchsuche

How to Return Multiple Columns from the Same Row as a JSON Array of Objects in PostgreSQL?

Mehrere Spalten als JSON-Array von Objekten in PostgreSQL zurückgeben

PostgreSQL bietet verschiedene Ansätze zum Abfragen und Formatieren von Daten als JSON-Array von Objekten, wobei die Ergebnisse nach einer bestimmten Spalte gruppiert werden. Hier ist eine Aufschlüsselung der Methoden für verschiedene PostgreSQL-Versionen.

PostgreSQL 10 und höher

Um bestimmte Schlüssel aus dem aggregierten JSON-Objekt zu entfernen, verwenden Sie vor der Aggregation den Operator -. Eine explizite Umwandlung in text[] ist erforderlich, um Mehrdeutigkeiten mit der überladenen Funktion zu beseitigen:

<code class="language-sql">SELECT val2, jsonb_agg(to_jsonb(t.*) - '{id, val2}'::text[]) AS js_34
FROM   tbl
GROUP  BY val2;</code>

PostgreSQL 9.4 und höher

Verwenden Sie jsonb_build_object(), um ein JSON-Objekt aus Schlüssel-Wert-Paaren zu erstellen:

<code class="language-sql">SELECT val2, jsonb_agg(jsonb_build_object('val3', val3, 'val4', val4)) AS js_34
FROM   tbl 
GROUP  BY val2;</code>

PostgreSQL 9.3 und höher

Verwenden Sie to_jsonb() mit einem ROW-Ausdruck oder einer Unterabfrage, um das Array von Objekten zu generieren:

<code class="language-sql">SELECT val2, jsonb_agg(to_jsonb((val3, val4))) AS js_34
FROM   tbl
GROUP  BY val2;</code>

Alternativ:

<code class="language-sql">SELECT val2, jsonb_agg(to_jsonb((SELECT t FROM (SELECT val3, val4) t))) AS js_34
FROM   tbl
GROUP  BY val2;</code>

Diese Methoden bieten effiziente Möglichkeiten zum Abrufen und Strukturieren von Daten, zum Gruppieren von Werten und zum Erstellen von JSON-Arrays von Objekten, die mehrere Spalten aus einer einzelnen Zeile darstellen.

Das obige ist der detaillierte Inhalt vonWie kann ich in PostgreSQL mehrere Spalten aus derselben Zeile als JSON-Array von Objekten zurückgeben?. 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