Heim > Datenbank > MySQL-Tutorial > Wie kann ich mehrere Spalten effizient als JSON-Array von Objekten in PostgreSQL abrufen?

Wie kann ich mehrere Spalten effizient als JSON-Array von Objekten in PostgreSQL abrufen?

Mary-Kate Olsen
Freigeben: 2025-01-14 21:51:43
Original
598 Leute haben es durchsucht

How to Efficiently Retrieve Multiple Columns as a JSON Array of Objects in PostgreSQL?

PostgreSQL: Generieren von JSON-Arrays von Objekten aus mehreren Spalten

Diese Anleitung zeigt, wie Sie Zeilen in einer PostgreSQL-Tabelle effizient nach einer einzelnen Spalte gruppieren und die verbleibenden Spalten in einem JSON-Array von Objekten zusammenfassen. Betrachten wir das MyTableBeispiel:

<code>| id | value_two | value_three | value_four |
|---|---|---|---|
| 1 | a | A | AA |
| 2 | a | A2 | AA2 |
| 3 | b | A3 | AA3 |
| 4 | a | A4 | AA4 |
| 5 | b | A5 | AA5 |</code>
Nach dem Login kopieren

Das Ziel besteht darin, eine Ausgabe wie diese zu erzeugen:

<code>| value_two | value_four |
|---|---|
| a | [{"value_three":"A","value_four":"AA"}, {"value_three":"A2","value_four":"AA2"}, {"value_three":"A4","value_four":"AA4"}]
| b | [{"value_three":"A3","value_four":"AA3"}, {"value_three":"A5","value_four":"AA5"}]</code>
Nach dem Login kopieren

Beachten Sie, dass einfachere Aggregationsmethoden häufig die id- und Gruppierungsspalte (value_two) in den JSON-Objekten enthalten, was wir vermeiden möchten.

Hier sind optimierte Lösungen für verschiedene PostgreSQL-Versionen:

PostgreSQL 10 und höher:

Nutzen Sie den Operator -, um unerwünschte Schlüssel auszuschließen:

SELECT value_two, jsonb_agg(to_jsonb(t.*) - '{id, value_two}'::text[]) AS value_four
FROM   MyTable t
GROUP  BY value_two;
Nach dem Login kopieren

PostgreSQL 9.4 und höher:

Verwenden Sie jsonb_build_object() für eine präzise Kontrolle über Schlüssel-Wert-Paare:

SELECT value_two, jsonb_agg(jsonb_build_object('value_three', value_three, 'value_four', value_four)) AS value_four
FROM   MyTable
GROUP  BY value_two;
Nach dem Login kopieren

PostgreSQL 9.3 und höher:

Beschäftigen Sie to_jsonb() mit einem Zeilenausdruck:

SELECT value_two, jsonb_agg(to_jsonb(row(value_three, value_four))) AS value_four
FROM   MyTable
GROUP  BY value_two;
Nach dem Login kopieren

Diese Methoden bieten effiziente und saubere Möglichkeiten, die gewünschte JSON-Ausgabe zu generieren, unnötige Schlüssel zu vermeiden und sich an verschiedene PostgreSQL-Versionen anzupassen. Wählen Sie für eine optimale Leistung die mit Ihrer Datenbankversion kompatible Methode.

Das obige ist der detaillierte Inhalt vonWie kann ich mehrere Spalten effizient als JSON-Array von Objekten in PostgreSQL abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage