Di antara banyak fungsi agregat MySQL, ada satu yang disebut JSON_ARRAYAGG()
. Fungsi ini memungkinkan Anda untuk menggabungkan kumpulan hasil sebagai larik JSON tunggal. Setiap baris dari kumpulan hasil berakhir sebagai elemen tunggal dalam larik.
Urutan elemen dalam array tidak ditentukan.
Sintaks
Sintaksnya seperti ini:
JSON_ARRAYAGG(col_or_expr)
Dimana col_or_expr
adalah kolom atau ekspresi yang mengevaluasi nilai tunggal.
Contoh
Berikut ini contoh untuk didemonstrasikan.
Berikut adalah kueri umum yang mungkin kami jalankan tanpa JSON_ARRAYAGG()
fungsi:
SELECT District AS 'State', Name AS 'City' FROM City WHERE CountryCode = 'AUS' ORDER BY State;
Hasil:
+-----------------+---------------+ | 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 | +-----------------+---------------+
Kami dapat menyesuaikan kueri itu, sehingga setiap kota menjadi elemen dalam array. Untuk melakukan ini, kita cukup memberikan Name
kolom (nama kota) ke JSON_ARRAYAGG()
fungsi.
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_ARRAYAGG(Name) AS 'Cities' FROM City WHERE CountryCode = 'AUS' GROUP BY State;
Hasil:
+-----------------+--------------------------------------------------------+ | 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"] | +-----------------+--------------------------------------------------------+
Lihat juga JSON_OBJECTAGG()
fungsi yang memungkinkan Anda membuat objek JSON dari kueri.