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

Cara mendapatkan elemen unik/berbeda di dalam array JSON di MySQL 5.7

Tidak ada metode langsung untuk mendapatkan nilai yang berbeda dari array JSON di MySQL. Salah satu metodenya adalah dengan menggunakan konsep tabel Sequence/Number Generator . Tabel urutan ini dapat digunakan sebagai Tabel Turunan (subquery), atau Anda dapat membuat tabel permanen yang menyimpan angka di database Anda.

Kami kemudian akan menggunakan tabel urutan ini untuk JSON_EXTRACT() nilai keluar dari array pada kunci pertama, kunci kedua, kunci ketiga dan seterusnya. Setelah kami mengekstrak nilai di baris terpisah, kami cukup menggunakan DISTINCT untuk mendapatkan nilai-nilai unik dari mereka. Setelah itu, kita dapat menggunakan JSON_ARRAYAGG() berfungsi untuk menggabungkan kembali nilai-nilai unik ini sebagai larik JSON.

Skema (MySQL v5.7)

SET @json = '["a", "b", "b", "a", "c"]';

Kueri

SELECT Json_arrayagg(dt.val) AS unq_json_array
FROM   (SELECT DISTINCT Json_extract(@json, Concat('$[', seq.n, ']')) AS val
        FROM   (SELECT 0 AS n UNION ALL SELECT 1 UNION ALL
                SELECT 2 UNION ALL SELECT 3 UNION ALL 
                SELECT 4 UNION ALL SELECT 5 UNION ALL
                SELECT 6 UNION ALL SELECT 7 UNION ALL
                SELECT 8 UNION ALL SELECT 9) AS seq) AS dt
WHERE  dt.val IS NOT NULL;

Hasil

| unq_json_array  |
| --------------- |
| ["a", "b", "c"] |

Lihat di DB Fiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL 5.7 &only_full_group_by

  2. SQL Dapatkan X entri terakhir dari 'custom' post_type menghitung jumlah individu dari post_type kustom

  3. Optimasi database MYSQL menggunakan pengindeksan

  4. Pernyataan yang Disiapkan MySQL

  5. Bagaimana cara membuat database dari perintah shell?