JSON_ARRAYAGG() în MySQL

Funcții de agregare MySQL 5.7.22+

Funcție de agregare: strânge valorile unui grup într-o listă JSON.

Sintaxă
JSON_ARRAYAGG(expresie)

Ce face JSON_ARRAYAGG()

JSON_ARRAYAGG() este echivalentul JSON al lui GROUP_CONCAT(): pentru fiecare grup, returnează o listă JSON cu valorile. Ordinea elementelor nu este garantată.

Parametri

Parametru Descriere
expresie Valoarea pusă în listă.

Ce returnează

O listă JSON.

Exemple

Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.

CREATE TABLE vanzari (
  agent VARCHAR(20),
  oras VARCHAR(20),
  luna INT,
  suma INT
);

INSERT INTO vanzari VALUES
  ('Ana', 'Iași', 1, 1200), ('Ana', 'Iași', 2, 1500), ('Ana', 'Iași', 3, 900),
  ('Dan', 'Cluj', 1, 900), ('Dan', 'Cluj', 2, 900), ('Dan', 'Cluj', 3, 1700),
  ('Ioana', 'Iași', 1, 2000), ('Ioana', 'Iași', 2, 1100);

Exemplul 1: Agenții fiecărui oraș, ca listă JSON

SELECT oras, JSON_ARRAYAGG(agent) AS agenti
FROM (SELECT DISTINCT oras, agent FROM vanzari ORDER BY agent) AS t
GROUP BY oras
ORDER BY oras;

Rezultat

+-------+------------------+
| oras  | agenti           |
+-------+------------------+
| Cluj  | ["Dan"]          |
| Iași  | ["Ana", "Ioana"] |
+-------+------------------+

Greșeli frecvente

  • Te bazezi pe ordinea elementelor. Dacă ordinea contează, folosește GROUP_CONCAT(... ORDER BY ...) sau sortează după extragere.

Comenzi înrudite

  • JSON_OBJECTAGG(): Funcție de agregare: construiește un obiect JSON din perechi cheie-valoare ale unui grup.
  • GROUP_CONCAT(): Lipește valorile unui grup într-un singur text, de exemplu toate produsele unei comenzi.
  • JSON_ARRAY(): Construiește o listă (array) JSON din valorile date.