Mysql
 sql >> база данни >  >> RDS >> Mysql

JSON_ARRAYAGG() – Създайте JSON масив от редовете на заявка в MySQL

Сред многото MySQL агрегатни функции е една, наречена JSON_ARRAYAGG() . Тази функция ви позволява да агрегирате набор от резултати като единичен JSON масив. Всеки ред от резултатния набор завършва като единичен елемент в масива.

Редът на елементите в масива е недефиниран.

Синтаксис

Синтаксисът е така:

JSON_ARRAYAGG(col_or_expr)

Където col_or_expr е колона или израз, който се оценява до една стойност.

Пример

Ето пример за демонстрация.

Ето една обща заявка, която може да изпълним без JSON_ARRAYAGG() функция:

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

Резултат:

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

Можем да коригираме тази заявка, така че всеки град да стане елемент в масив. За да направите това, ние просто предаваме Name колона (името на града) към JSON_ARRAYAGG() функция.

Ние също така използваме GROUP BY клауза за групиране на резултатите по District колона (в този случай сме създали псевдоним за тази колона, наречен State ).

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

Резултат:

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

Вижте също JSON_OBJECTAGG() функция, която ви позволява да създадете JSON обект от заявка.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да съхранявате Java Date в Mysql datetime с JPA

  2. Какво е значението на въпросителния знак в MySQL в колона WHERE =??

  3. Най-бързият начин за импортиране на голям CSV файл в MySql с помощта на MySql CLI

  4. sql се присъединява като диаграма на Venn

  5. Съхранена процедура, която автоматично изтрива редове, по-стари от 7 дни в MYSQL