Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

JSON_OBJECTAGG() – Buat Objek JSON dari Hasil Kueri di MySQL

MySQL menyertakan fungsi agregat yang disebut JSON_OBJECTAGG() . Fungsi ini memungkinkan Anda membuat objek JSON yang berisi pasangan nilai kunci. Lebih khusus lagi, ini memungkinkan Anda membuat objek JSON ini berdasarkan hasil kueri.

Ia menerima dua argumen, yang pertama digunakan sebagai kunci dan yang kedua sebagai nilai. Argumen ini dapat berupa nama kolom atau ekspresi.

Sintaks

Sintaksnya seperti ini:

JSON_OBJECTAGG(key, value)

Dimana key adalah kolom atau ekspresi yang mewakili kunci dari pasangan kunci/nilai, dan value adalah kolom atau ekspresi yang mewakili nilai dari pasangan kunci/nilai.

Contoh

Berikut ini contoh untuk didemonstrasikan.

Berikut adalah kueri umum yang mungkin kami jalankan tanpa JSON_OBJECTAGG() fungsi:

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

Hasil:

+-----------------+---------------+------------+
| State           | City          | Population |
+-----------------+---------------+------------+
| Capital Region  | Canberra      |     322723 |
| New South Wales | Sydney        |    3276207 |
| New South Wales | Newcastle     |     270324 |
| New South Wales | Central Coast |     227657 |
| New South Wales | Wollongong    |     219761 |
| Queensland      | Brisbane      |    1291117 |
| Queensland      | Gold Coast    |     311932 |
| Queensland      | Townsville    |     109914 |
| Queensland      | Cairns        |      92273 |
| South Australia | Adelaide      |     978100 |
| Tasmania        | Hobart        |     126118 |
| Victoria        | Melbourne     |    2865329 |
| Victoria        | Geelong       |     125382 |
| West Australia  | Perth         |    1096829 |
+-----------------+---------------+------------+

Kita dapat menyesuaikan query tersebut, sehingga Name kolom (dalam contoh ini kami telah memberikan kolom ini sebuah alias dari City ) menjadi kunci, dan Population kolom menjadi nilai.

Kami juga menggunakan GROUP BY klausa untuk mengelompokkan hasil menurut District kolom (dalam hal ini, kami telah membuat alias untuk kolom ini yang disebut State ).

SELECT 
  District AS 'State',
  JSON_OBJECTAGG(Name, Population) AS 'City/Population'
FROM City
WHERE CountryCode = 'AUS'
GROUP BY State;

Hasil:

+-----------------+-----------------------------------------------------------------------------------------+
| State           | City/Population                                                                         |
+-----------------+-----------------------------------------------------------------------------------------+
| Capital Region  | {"Canberra": 322723}                                                                    |
| New South Wales | {"Sydney": 3276207, "Newcastle": 270324, "Wollongong": 219761, "Central Coast": 227657} |
| Queensland      | {"Cairns": 92273, "Brisbane": 1291117, "Gold Coast": 311932, "Townsville": 109914}      |
| South Australia | {"Adelaide": 978100}                                                                    |
| Tasmania        | {"Hobart": 126118}                                                                      |
| Victoria        | {"Geelong": 125382, "Melbourne": 2865329}                                               |
| West Australia  | {"Perth": 1096829}                                                                      |
+-----------------+-----------------------------------------------------------------------------------------+

Dalam hal ini kami mengelompokkan kota berdasarkan negara bagian/kabupatennya. Namun, jika kita hanya menginginkan satu objek JSON besar yang berisi semua kota/populasi untuk negara itu, kita dapat menghapus negara bagian/distrik (dan GROUP BY yang terkait dengannya. klausa) dari kueri sama sekali.

SELECT
  JSON_OBJECTAGG(Name, Population) AS 'City/Population'
FROM City
WHERE CountryCode = 'AUS';

Hasil:

+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| City/Population                                                                                                                                                                                                                                                                                |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| {"Perth": 1096829, "Cairns": 92273, "Hobart": 126118, "Sydney": 3276207, "Geelong": 125382, "Adelaide": 978100, "Brisbane": 1291117, "Canberra": 322723, "Melbourne": 2865329, "Newcastle": 270324, "Gold Coast": 311932, "Townsville": 109914, "Wollongong": 219761, "Central Coast": 227657} |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Lihat juga JSON_ARRAYAGG() fungsi yang memungkinkan Anda menggabungkan hasil kueri ke dalam larik 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. Sintaks SQL CREATE TABLE – Didaftarkan oleh DBMS

  2. Cara Melakukan Full Outer Join di MySQL

  3. Cara Mengubah Kata Sandi Root MySQL atau MariaDB di Linux

  4. Hitung persentil di MySQL berdasarkan total

  5. Bagaimana Anda memilih setiap baris ke-n dari mysql