JSON_OBJECTAGG() în MySQL

Funcții de agregare MySQL 5.7.22+

Funcție de agregare: construiește un obiect JSON din perechi cheie-valoare ale unui grup.

Sintaxă
JSON_OBJECTAGG(cheie, valoare)

Ce face JSON_OBJECTAGG()

JSON_OBJECTAGG() ia două coloane și construiește un obiect: prima dă cheile, a doua valorile. Dacă o cheie apare de mai multe ori, rămâne ultima valoare citită.

Parametri

Parametru Descriere
cheie Coloana pentru chei (nu poate fi NULL).
valoare Coloana pentru valori.

Ce returnează

Un obiect 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: Vânzările fiecărui agent, pe luni

SELECT agent, JSON_OBJECTAGG(luna, suma) AS pe_luni
FROM vanzari
GROUP BY agent
ORDER BY agent;

Rezultat

+-------+----------------------------------+
| agent | pe_luni                          |
+-------+----------------------------------+
| Ana   | {"1": 1200, "2": 1500, "3": 900} |
| Dan   | {"1": 900, "2": 900, "3": 1700}  |
| Ioana | {"1": 2000, "2": 1100}           |
+-------+----------------------------------+

Greșeli frecvente

  • Cheile duplicate se pierd fără eroare. Asigură-te că perechea (grup, cheie) este unică.

Comenzi înrudite

  • JSON_ARRAYAGG(): Funcție de agregare: strânge valorile unui grup într-o listă JSON.
  • JSON_OBJECT(): Construiește un obiect JSON din perechi cheie-valoare.