Heim >Datenbank >MySQL-Tutorial >Wie kann ich mehrere Spalten effizient als JSON-Array von Objekten in PostgreSQL abrufen?
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 MyTable
Beispiel:
<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>
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>
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:
<code class="language-sql">SELECT value_two, jsonb_agg(to_jsonb(t.*) - '{id, value_two}'::text[]) AS value_four FROM MyTable t GROUP BY value_two;</code>
PostgreSQL 9.4 und höher:
Verwenden Sie jsonb_build_object()
für eine präzise Kontrolle über Schlüssel-Wert-Paare:
<code class="language-sql">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;</code>
PostgreSQL 9.3 und höher:
Beschäftigen Sie to_jsonb()
mit einem Zeilenausdruck:
<code class="language-sql">SELECT value_two, jsonb_agg(to_jsonb(row(value_three, value_four))) AS value_four FROM MyTable GROUP BY value_two;</code>
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!