Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

JSON_ARRAYAGG () - Tạo một Mảng JSON từ các Hàng Truy vấn trong MySQL

Trong số nhiều hàm tổng hợp MySQL có một hàm được gọi là JSON_ARRAYAGG() . Hàm này cho phép bạn tổng hợp tập hợp kết quả dưới dạng một mảng JSON duy nhất. Mỗi hàng của tập hợp kết quả kết thúc như một phần tử duy nhất trong mảng.

Thứ tự của các phần tử trong mảng là không xác định.

Cú pháp

Cú pháp như sau:

JSON_ARRAYAGG(col_or_expr)

Ở đâu col_or_expr là một cột hoặc một biểu thức đánh giá một giá trị duy nhất.

Ví dụ

Đây là một ví dụ để chứng minh.

Đây là một truy vấn phổ biến mà chúng tôi có thể chạy mà không có JSON_ARRAYAGG() chức năng:

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

Kết quả:

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

Chúng tôi có thể điều chỉnh truy vấn đó, để mỗi thành phố trở thành một phần tử trong một mảng. Để thực hiện việc này, chúng tôi chỉ cần chuyển Name (tên thành phố) thành JSON_ARRAYAGG() chức năng.

Chúng tôi cũng sử dụng GROUP BY mệnh đề để nhóm các kết quả theo District (trong trường hợp này, chúng tôi đã tạo một bí danh cho cột này có tên là State ).

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

Kết quả:

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

Cũng xem JSON_OBJECTAGG() cho phép bạn tạo một đối tượng JSON từ một truy vấn.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự khác biệt giữa MySQL, MySQLi và PDO là gì?

  2. Làm cách nào để truy vấn giữa hai ngày bằng MySQL?

  3. Sử dụng các hàm tổng hợp (SUM, AVG, MAX, MIN, COUNT, DISTINCT) trong MySQL

  4. create_series () tương đương trong MySQL

  5. Truy vấn SQL để tạo cơ sở dữ liệu trong MySQL