sql >> Database >  >> RDS >> Mysql

JSON_ARRAYAGG() - Maak een JSON-array van de rijen van een query in MySQL

Onder de vele MySQL-aggregaatfuncties is er een genaamd JSON_ARRAYAGG() . Met deze functie kunt u een resultatenset samenvoegen als één JSON-array. Elke rij van de resultatenset eindigt als een enkel element in de array.

De volgorde van de elementen in de array is niet gedefinieerd.

Syntaxis

De syntaxis gaat als volgt:

JSON_ARRAYAGG(col_or_expr)

Waar col_or_expr is een kolom of een uitdrukking die resulteert in een enkele waarde.

Voorbeeld

Hier is een voorbeeld om te demonstreren.

Hier is een veelvoorkomende query die we kunnen uitvoeren zonder de JSON_ARRAYAGG() functie:

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

Resultaat:

+-----------------+---------------+
| State           | City          |
+-----------------+---------------+
| Capital Region  | Canberra      |
| New South Wales | Sydney        |
| New South Wales | Newcastle     |
| New South Wales | Central Coast |
| New South Wales | Wollongong    |
| Queensland      | Brisbane      |
| Queensland      | Gold Coast    |
| Queensland      | Townsville    |
| Queensland      | Cairns        |
| South Australia | Adelaide      |
| Tasmania        | Hobart        |
| Victoria        | Melbourne     |
| Victoria        | Geelong       |
| West Australia  | Perth         |
+-----------------+---------------+

We kunnen die query aanpassen, zodat elke stad een element in een array wordt. Om dit te doen, geven we gewoon de Name . door kolom (de naam van de stad) naar de JSON_ARRAYAGG() functie.

We gebruiken ook een GROUP BY clausule om de resultaten te groeperen op de District kolom (in dit geval hebben we een alias voor deze kolom gemaakt met de naam State ).

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

Resultaat:

+-----------------+--------------------------------------------------------+
| State           | Cities                                                 |
+-----------------+--------------------------------------------------------+
| Capital Region  | ["Canberra"]                                           |
| New South Wales | ["Sydney", "Newcastle", "Central Coast", "Wollongong"] |
| Queensland      | ["Brisbane", "Gold Coast", "Townsville", "Cairns"]     |
| South Australia | ["Adelaide"]                                           |
| Tasmania        | ["Hobart"]                                             |
| Victoria        | ["Melbourne", "Geelong"]                               |
| West Australia  | ["Perth"]                                              |
+-----------------+--------------------------------------------------------+

Zie ook de JSON_OBJECTAGG() functie waarmee u een JSON-object van een query kunt maken.


  1. NULLIF() Functie in Oracle

  2. Flexibele en beheersbare stuklijsten (BOM)

  3. Importeer Excel-gegevens in PostgreSQL 9.3

  4. Dynamisch gegevens laden op div-scroll met behulp van php, mysql, jQuery en ajax