Mysql
 sql >> Datenbank >  >> RDS >> Mysql

JSON_ARRAYAGG() – Erstellen Sie ein JSON-Array aus den Zeilen einer Abfrage in MySQL

Unter den vielen MySQL-Aggregatfunktionen befindet sich eine namens JSON_ARRAYAGG() . Mit dieser Funktion können Sie eine Ergebnismenge als einzelnes JSON-Array aggregieren. Jede Zeile der Ergebnismenge endet als einzelnes Element im Array.

Die Reihenfolge der Elemente im Array ist undefiniert.

Syntax

Die Syntax lautet wie folgt:

JSON_ARRAYAGG(col_or_expr)

Wobei col_or_expr ist eine Spalte oder ein Ausdruck, der zu einem einzelnen Wert ausgewertet wird.

Beispiel

Hier ist ein Beispiel zur Veranschaulichung.

Hier ist eine allgemeine Abfrage, die wir möglicherweise ohne JSON_ARRAYAGG() ausführen Funktion:

SELECT District AS 'State', Name AS 'City'FROM CityWHERE CountryCode ='AUS'ORDER BY State;

Ergebnis:

+-----------------+---------------+| Zustand | Stadt |+----------------+---------------+| Hauptstadtregion | Canberra || Neusüdwales | Sydney || Neusüdwales | Newcastle || Neusüdwales | Zentrale Küste || Neusüdwales | Wollongong || Queensland | Brisbane || Queensland | Goldküste || Queensland | Townsville || Queensland | Steinhaufen || Südaustralien | Adelheid || Tasmanien | Hobart || Viktoria | Melbourne || Viktoria | Geelong || Westaustralien | Perth |+----------------+---------------+

Wir können diese Abfrage so anpassen, dass jede Stadt ein Element in einem Array wird. Dazu übergeben wir einfach den Name Spalte (der Name der Stadt) zu JSON_ARRAYAGG() Funktion.

Wir verwenden auch ein GROUP BY -Klausel, um die Ergebnisse nach dem District zu gruppieren Spalte (in diesem Fall haben wir einen Alias ​​für diese Spalte namens State erstellt ).

SELECT District AS 'State', JSON_ARRAYAGG(Name) AS 'Cities'FROM CityWHERE CountryCode ='AUS'GROUP BY State;

Ergebnis:

+------------+------------------------------------ ----------------------------+| Zustand | Städte |+------------+------------------------ ----------------------------+| Hauptstadtregion | ["Canberra"] || Neusüdwales | ["Sydney", "Newcastle", "Central Coast", "Wollongong"] || Queensland | ["Brisbane", "Goldküste", "Townsville", "Cairns"] || Südaustralien | ["Adelaide"] || Tasmanien | ["Hobart"] || Viktoria | ["Melbourne", "Geelong"] || Westaustralien | ["Perth"] |+------------+------------------------- -------------------------------+

Siehe auch JSON_OBJECTAGG() Funktion, mit der Sie ein JSON-Objekt aus einer Abfrage erstellen können.