sql >> Database teknologi >  >> RDS >> Mysql

JSON_ARRAYAGG() – Opret et JSON-array fra rækkerne af en forespørgsel i MySQL

Blandt de mange MySQL-samlede funktioner er en kaldet JSON_ARRAYAGG() . Denne funktion giver dig mulighed for at aggregere et resultatsæt som et enkelt JSON-array. Hver række i resultatsættet ender som et enkelt element i arrayet.

Rækkefølgen af ​​elementerne i arrayet er udefineret.

Syntaks

Syntaksen ser sådan ud:

JSON_ARRAYAGG(col_or_expr)

Hvor col_or_expr er en kolonne eller et udtryk, der evalueres til en enkelt værdi.

Eksempel

Her er et eksempel til at demonstrere.

Her er en almindelig forespørgsel, vi muligvis kører uden JSON_ARRAYAGG() funktion:

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

Resultat:

+-----------------+---------------+
| 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         |
+-----------------+---------------+

Vi kan justere den forespørgsel, så hver by bliver et element i et array. For at gøre dette sender vi blot Name kolonne (navnet på byen) til JSON_ARRAYAGG() funktion.

Vi bruger også en GROUP BY klausul for at gruppere resultaterne efter District kolonne (i dette tilfælde har vi oprettet et alias for denne kolonne kaldet State ).

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

Resultat:

+-----------------+--------------------------------------------------------+
| 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"]                                              |
+-----------------+--------------------------------------------------------+

Se også JSON_OBJECTAGG() funktion, som giver dig mulighed for at oprette et JSON-objekt ud fra en forespørgsel.


  1. Sådan eksporteres data til flad fil med BCP Utility og importerer data med Bulk Insert

  2. SQL Server Passthrough-forespørgsel som grundlag for et DAO-postsæt i Access

  3. AMD, Intel og PostgreSQL

  4. Typer af SQL JOIN